0

我有以下页面结构:

toppage
-page1
-page2
-page3
-page4
- (menu separator)
-page5
-page6
-page7
-page8

Page1 到 page4 用于定义水平主菜单。

Page5 到 page7 用于定义垂直侧边菜单。

以下排版用于主菜单:

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
}

是否可以在打字稿中用类似以下的方法替换该maxItems方法?

  • 获取菜单分隔符的 pageid。
  • 使用一个语句说 mainMenu 应该在这个 pageid 结束。
4

2 回答 2

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=directoryinHMENU来构建包含所有子项的菜单。在不更改 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
于 2012-05-22T15:17:45.510 回答
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
}

我没有测试,但主要原则应该很清楚:创建一个内部寄存器,检查每个菜单项。如果有 doktype menu-separator (199) 的菜单项,则设置寄存器。如果设置了寄存器,则不呈现菜单。

于 2012-05-23T07:14:50.733 回答