我想有一个菜单混合当前页面的页面和部分。 例如,在第1页:
在第2页:
到目前为止,我所能做的就是使用TypoScript构建一个新的部分菜单:
lib.sectionnavigation = HMENU
lib.sectionnavigation {
1 = TMENU
1 {
sectionIndex = 1
sectionIndex.type = header
sectionIndex.useColPos = -1
NO {
ATagBeforeWrap = 1
linkWrap = <span> | </span> <span class="bar"></span>
allWrap = <li> | </li>
allWrap.insertData = 1
}
}
special = list
special.value.data = page:uid
}
然后使用f:cObject
在bootstrap_package的Main.html部分中添加此菜单:
<f:cObject typoscriptObjectPath="lib.sectionnavigation" />
然而,这意味着我必须保持&#34;格式&#34; TypoScript和 Main.html 部分中的(<li><span>...</span><span class="bar"></span></li>
),这是不方便的。
例如,如果我更改菜单以便我不需要栏类跨度,我将不得不更新部分和TypoScript!
根据我的理解,bootstrap_package定义了setup.txt中的主菜单:
10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
10 {
levels = 2
includeSpacer = 1
as = mainnavigation
}
然后在 Main.html partial:
中使用它<f:for each="{mainnavigation}" as="mainnavigationItem">
我的第一个计划是尝试使用TypoScript构建一个新阵列(类似于{mainnavigation}
中的阵列),但我找不到方法!
我也试过使用MenuProcessor,但也没有成功。
任何帮助都会非常感激!
谢谢。
答案 0 :(得分:0)
您应该可以使用选项来识别typoscript菜单中的当前页面,以替换菜单项的完整呈现。
菜单中当前页面的呈现可以使用ACT
或CUR
定义(ACT
标识根行中的所有页面:当前页面,父级,祖父级,... )。在你的情况下,它可能没有区别,但你可以安全地玩:
lib.MainMenu = HMENU
lib.MainMenu {
wrap = <ul class="nav">|</ul>
1 = TMENU
1 {
NO {
wrapItemAndSub = <li><span> | </span> <span class="bar"></span></li>
}
CUR = 1
CUR.doNotShowLink = 1
// insert your section menu here:
CUR.before.cObject < lib.sectionnavigation
}
}