TYPO3:添加特殊菜单CE并添加class="active"
TYPO3: Add special menu CE and add class="active"
在TYPO3中可以插入一个特殊的菜单作为内容元素,您可以select大约八种不同的方式来收集菜单。
在我 select 编辑的菜单中,如果菜单项处于活动状态,则没有分配 class,我需要用 CSS 突出显示它。我想知道如何添加自定义菜单。
注意:一旦我应用了我自己的答案中提供的解决方案,我意识到主要的困难是(通常在 TYPO3 中)缓存,注意经常刷新,否则你永远不会确定什么是正确的代码和什么不是...
要将 link 标记为活动,您需要激活 ACT = 1
。
## MAIN Navigation [Begin]
lib.Menu = HMENU
lib.Menu {
## FIRST LEVEL ##
1 = TMENU
1 {
wrap = <ul>|</ul>
expAll = 1
noBlur = 1
NO.wrapItemAndSub = <li>|</li>
ACT = 1
ACT.wrapItemAndSub = <li class="active">|</li>
}
## MAIN Navigation [End]
答案:
复制原始流体模板(在我的例子中是所选页面的子页面菜单):
typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-1.html
TYPO3 v8: 不同的路径和不同的名字
typo3/sysext/fluid_styled_content/Resources/Private/Templates/xxx.html
至(与您将在第 4 点中声明的目录一致)
EXT:myExtension/Resources/Private/Partials/Menu/Type-1.html
在您的设置中添加一个给出当前页面 ID 的变量(libs.ts,这可能更容易完成,并且该值可能已经存在以供第 3 点使用,但我不知道如何编码)。
lib.pageId = TEXT
lib.pageId.data = page:uid
编辑模板(我这里只给出适用条件)
<f:if condition="{page.uid} == {f:cObject(typoscriptObjectPath: 'lib.pageId')}">
...
</f:if>
包含新的流体模板(我覆盖了原来的,保留原来的名字)
TYPO3 v8:使用lib.contentElement
代替lib.fluidContent
lib.fluidContent.partialRootPaths.1920 = EXT:myExtension/Resources/Private/Partials/Menu/
或者像我一样,将其包含在您的页面设置中
page = PAGE
page {
# Page Main template
10 = FLUIDTEMPLATE
10 {
partialRootPaths = EXT:myExtension/Resources/Private/Partials/Menu/
}
}
如果您想将它作为一个选项添加到列表中,您可以重新编号文件(如 Type-9.html)并将其添加到页面 TSConfig 的菜单中:
TYPO3 v8: 我没有找到在 v8 中添加菜单的方法,这里给出的配置不起作用...
TCEFORM.tt_content.menu_type {
types {
menu{
addItems {
9 = menu of subpages of selected pages active highlighted
}
}
}
}
在TYPO3中可以插入一个特殊的菜单作为内容元素,您可以select大约八种不同的方式来收集菜单。
在我 select 编辑的菜单中,如果菜单项处于活动状态,则没有分配 class,我需要用 CSS 突出显示它。我想知道如何添加自定义菜单。
注意:一旦我应用了我自己的答案中提供的解决方案,我意识到主要的困难是(通常在 TYPO3 中)缓存,注意经常刷新,否则你永远不会确定什么是正确的代码和什么不是...
要将 link 标记为活动,您需要激活 ACT = 1
。
## MAIN Navigation [Begin]
lib.Menu = HMENU
lib.Menu {
## FIRST LEVEL ##
1 = TMENU
1 {
wrap = <ul>|</ul>
expAll = 1
noBlur = 1
NO.wrapItemAndSub = <li>|</li>
ACT = 1
ACT.wrapItemAndSub = <li class="active">|</li>
}
## MAIN Navigation [End]
答案:
复制原始流体模板(在我的例子中是所选页面的子页面菜单):
typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu/Type-1.html
TYPO3 v8: 不同的路径和不同的名字
typo3/sysext/fluid_styled_content/Resources/Private/Templates/xxx.html
至(与您将在第 4 点中声明的目录一致)
EXT:myExtension/Resources/Private/Partials/Menu/Type-1.html
在您的设置中添加一个给出当前页面 ID 的变量(libs.ts,这可能更容易完成,并且该值可能已经存在以供第 3 点使用,但我不知道如何编码)。
lib.pageId = TEXT lib.pageId.data = page:uid
编辑模板(我这里只给出适用条件)
<f:if condition="{page.uid} == {f:cObject(typoscriptObjectPath: 'lib.pageId')}"> ... </f:if>
包含新的流体模板(我覆盖了原来的,保留原来的名字)
TYPO3 v8:使用
lib.contentElement
代替lib.fluidContent
lib.fluidContent.partialRootPaths.1920 = EXT:myExtension/Resources/Private/Partials/Menu/
或者像我一样,将其包含在您的页面设置中
page = PAGE page { # Page Main template 10 = FLUIDTEMPLATE 10 { partialRootPaths = EXT:myExtension/Resources/Private/Partials/Menu/ } }
如果您想将它作为一个选项添加到列表中,您可以重新编号文件(如 Type-9.html)并将其添加到页面 TSConfig 的菜单中:
TYPO3 v8: 我没有找到在 v8 中添加菜单的方法,这里给出的配置不起作用...
TCEFORM.tt_content.menu_type { types { menu{ addItems { 9 = menu of subpages of selected pages active highlighted } } } }