使用分隔页的id来定义菜单结束

时间:2012-05-22 14:56:06

标签: typo3 typoscript

我有以下页面结构:

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方法?

  • 获取菜单分隔符的pageid。
  • 使用声明说mainMenu应该以此pageid结尾。

2 个答案:

答案 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)的菜单项,则设置寄存器。如果设置了寄存器,则不要渲染菜单。