我有以下页面结构:
toppage
-page1
-page2
-page3
-page4
- (menu separator)
-page5
-page6
-page7
-page8
第1页到第4页用于定义水平主菜单。
第5页到第7页用于定义垂直边菜单。
主菜单使用以下拼写错误:
lib.mainMenu = HMENU
lib.mainMenu.special = directory
lib.mainMenu.special.value = {$main_menu_start_id}
lib.mainMenu.entryLevel = 0
lib.mainMenu.1 = TMENU
lib.mainMenu.1 {
// Fix to limit items in main menu
maxItems = 4
}
是否有可能在typoscript中用以下内容替换maxItems
方法?
答案 0 :(得分:2)
危险的方法,我怀疑是否可以用纯TypoScript
来做到这一点相反,我建议使用special=list
示例构建水平菜单(第1-4页):
lib.mainMenu = HMENU
lib.mainMenu.special = list
lib.mainMenu.special.value = 1,2,3,4
lib.mainMenu.1 = TMENU
//etc
然后将垂直菜单作为除前4个
之外的所有其他项目的菜单lib.sideMenu = HMENU
lib.sideMenu.excludeUidList = 1,2,3,4
lib.sideMenu.1 = TMENU
// etc
其他方式
您还可以将hidden in menu
的页面放在开始时调用它horizontal menu items
,然后使用special=directory
中的HMENU
来构建包含所有子项的菜单。在不更改TS的情况下添加/删除/更改项目也更容易:
结构:
- horizontal menu items (uid: 123, hidden in menu)
|-- page 1
|-- page 2
|-- page 3
--- page 4
- page 5
- page 6
- page 7
TS:
lib.mainMenu = HMENU
lib.mainMenu.special = directory
lib.mainMenu.special.value = 123
lib.mainMenu.1 = TMENU
//etc
lib.sideMenu = HMENU
lib.sideMenu.1 = TMENU
// etc
答案 1 :(得分:1)
有可能。但是你不能使用optionSplit。
(未测试的)
lib.mainMenu.1.NO.allStdWrap {
prepend = LOAD_REGISTER
prepend {
data = REGISTER:hideMenuItem
ifEmpty = 0
override = 1
override.if.equals.field = doktype
override.if.value = 199
}
if.isFalse.data = REGISTER:hideMenuItem
}
我没有测试,但主要原则应该变得清晰:创建一个内部REGISTER,检查每个menuitem。如果存在doktype菜单分隔符(199)的菜单项,则设置寄存器。如果设置了寄存器,则不要渲染菜单。