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



我有以下页面结构:

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
}

是否可以在排版中用如下所示的内容替换maxItems方法?

  • 获取菜单分隔符的页面 ID。
  • 使用语句说主菜单应该在此页面ID结束。

有风险的方法,我怀疑是否有可能用纯粹的 TypoScript 做到这一点

相反,我建议使用以下示例构建水平菜单(第 1-4 页special=list

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,然后在HMENU中使用special=directory来构建包含所有子项的菜单。无需更改 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

这是可能的。但是你不能使用选项拆分然后。

(未经测试(

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,为每个菜单项检查。如果有 doktype 菜单分隔符 (199( 的菜单项,则设置寄存器。如果设置了寄存器,则不要呈现菜单。

最新更新