我有这样的pagetree:
home
foo
foobar
foobaz
bar
barbar
contact
我想显示一个导航菜单,其中包含当前页面的所有子页面 . 我用 TypoScript
实现了这个目标:
subNav = HMENU
subNav {
entryLevel = -1
1 = TMENU
1 {
wrap = <ul id="submenu">|</ul>
NO = 1
NO {
wrapItemAndSub = <li>|</li>
}
ACT = 1
ACT {
wrapItemAndSub = <li id="active">|</li>
}
}
}
But: 当前页面没有子页面时,应显示父页面的子页面 .
例子:
-
我在页面
home
:菜单应显示指向页面foo
和bar
的链接 . -
我在
foo
:foobar
和foobaz
应该显示 . -
我在
foobar
: Here also foobar and foobaz should be shown instead of an empty menu.
Typo3版本是7.6 .
3 回答
我可以解决它 . 如果当前页面有子页面,我必须将
HMENU
的entryLevel
设置为-1
.-1
表示:从当前页面的che子页面开始 . 如果页面没有子页面,则必须将entryLevel
设置为-2
. 这意味着:从父页面的子节点开始 .entryLevel
有一个override
属性:这是一个很好的问题 . 目前我只看到使用entryLevel的stdWrap属性的解决方案 . 所以你可以创建一个
entryLevel.stdWrap.cObject = CONTENT
,然后在pidInRootline = current(默认?)页面上执行选择查询 . 在CONTENT的renderObj
中,您只需返回entryLevel以防子页面被找到,如果没有,则返回下一个最高级别的entryLevel .像这样它应该是可能的,但我希望任何人都有更好的解决方案 .
为了完整起见,我想提一下,有时可以选择“从前端”来思考这些问题 .
例如 . 如果在菜单集中有隐藏的子页面或包含或排除菜单中的页面的其他条件,除非在
entrylevel.override
中重现,否则您将获得一个空菜单 . 这可以通过使用类似的东西来避免这样你就不必费心为什么当前页面的菜单是空的,这就足够了 . 尽管如此......在包装方面可能会有点繁琐