我想创建一个复杂的菜单(水平&垂直),以复制我的网站的结构。
假设我在Typo3中的页面结构看起来像这样:
<root>
-FIRST
--child
--child
--child
-SECOND
--child
--child
--child
-THIRD
--child
--child
--child
然后,菜单看起来像这样:
FIRST SECOND THIRD
child child child
child child child
child child child
在我以前的版本中,我和static使用Typoscript为孩子创建菜单的父母页面。由于我不知道更好,因此每个显示的菜单都有自己的代码,看起来像这样:
lib.menuChildren = HMENU
lib.menuChildrenl{
special = directory
special.value = {$nav.first}
1 = TMENU
1 {
expAll = 1
NO = 1
NO {
wrapItemAndSub = <li>|</li>
stdWrap.htmlSpecialChars = 1
ATagTitle.field = title
}
ACT < .NO
ACT.wrapItemAndSub = <li class="active">|</li>
CUR < .ACT
CUR.doNotLinkIt = 1
}
}
这是渲染菜单的流体模板:
<ul class="nav nav-default">
<li>
<ul class="nav nav-stacked">
<li class="nav-caption">FIRST</li>
<f:cObject typoscriptObjectPath="lib.childrenFirst" />
</ul>
</li>
<li>
<ul class="nav nav-stacked">
<li class="nav-caption">SECOND</li>
<f:cObject typoscriptObjectPath="lib.childrenSecond" />
</ul>
</li>
<li>
<ul class="nav nav-stacked">
<li class="nav-caption">THIRD</li>
<f:cObject typoscriptObjectPath="lib.childrenThird" />
</ul>
</li>
</ul>
为了避免过硬编码的父母,我想动态创建整个菜单。如何实现?
从根级启动您的hmenu,然后在hmenu(2 = tmenu)中添加一个深度。这样的东西(根据您的要求调整HTML):
lib.menuChildren = HMENU
lib.menuChildrenl{
special = directory
special.value = {$root}
wrap = <ul class="nav nav-default">|</ul>
1 = TMENU
1 {
expAll = 1
NO = 1
NO {
wrapItemAndSub = <li>|</li>
stdWrap.htmlSpecialChars = 1
ATagTitle.field = title
}
ACT < .NO
ACT.wrapItemAndSub = <li class="active">|</li>
CUR < .ACT
CUR.doNotLinkIt = 1
}
2 < .1
2.wrap = <ul class="nav nav-stacked">|</ul>
}
要使外观垂直/必须使用CSS。
http://docs.typo3.org/typo3cms/typoscriptreference/menuobjects/index.html