从菜单中隐藏页面和子页面

hide page & subpages from menu

我在 TYPO3 中有以下页面结构:

- 1
  - 2
  - 3
- 4
  - 5
  - 6
- 7
  - 8
  - 9

现在我想在页眉菜单中包含 1/* + 4/*,在页脚菜单中包含 4/* + 7/*。由于页眉和页脚菜单不同,我不能只使用 "hide in menu" 功能,而需要在 TypoScript 中使用。

这是我目前的情况:

HEADERMENU = HMENU
HEADERMENU {
    1 = TMENU
    1.expAll = 1

    1.NO = 1
    1.NO {
        stdWrap.if.value.field = uid
        stdWrap.if.equals = 7
        stdWrap.if.negate = 1
    }

    2 < .1
}

FOOTERMENU < HEADERMENU
FOOTERMENU.1.NO.stdWrap.if.equals = 1

问题在于,它仍然在页眉中显示第 8+9 页,在页脚中显示第 2+3 页,即使它不再显示第 1/7 页。我知道我可以使用 if.isInList 并提供所有子页面 ID,但是每次添加新页面时我都必须更改 TypoScript。如果可能,我想动态排除一个页面及其所有子页面。

我该怎么做?

您可以采用 special=directory 方法呈现一个或多个页面及其子页面的菜单。

HEADERMENU.special = directory
HEADERMENU.special.value = 1, 4

documentation 中的更多信息。

正如丹尼尔在他的回答中提到的,有一种方法可以显示所选页面的所有子页面。 special = directory 仅显示子页面。因此,您在菜单中只能看到 2/35/68/9

special = directory

"This will generate a menu of all pages with pid = 35 and pid = 56."

我建议 excludeUidList 属性。

HEADERMENU = HMENU
HEADERMENU {
    excludeUidList = 7
    1 = TMENU
    1.expAll = 1

    2 < .1
}

FOOTERMENU < HEADERMENU
FOOTERMENU.excludeUidList = 1

它作为数据库 SELECT 查询中的 WHERE 条件工作,因此您不会在第一级获得这些页面,也不会找到它们的子页面。