Navigation Typo3中的嵌套菜单

Navigation Typo3中的嵌套菜单,navigation,typo3,typoscript,fluid,Navigation,Typo3,Typoscript,Fluid,我想创建一个混合菜单(水平和垂直),复制我的网站结构 假设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 c

我想创建一个混合菜单(水平和垂直),复制我的网站结构

假设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
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
  }
}
在我以前的版本中,static和我使用打字脚本为孩子们创建菜单的父页面。因为我不太清楚,每个显示的菜单都有自己的代码,看起来像这样:

<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
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
  }
}
lib.menuChildren=humenu
自由儿童{
特殊=目录
special.value={$nav.first}
1=t菜单
1 {
expAll=1
否=1
没有{
wrapItemAndSub=
  • |
  • stdWrap.htmlSpecialChars=1 ATagTitle.field=标题 } 第号法案 ACT.wrapItemAndSub=
  • |
  • 当前法案 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>
    
      • 首先
      • 第三

    为了避免硬编码的父菜单,我想动态创建整个菜单。如何做到这一点?

    从根部开始,在你的纸上增加一个深度(2=TMENU)。类似这样的内容(根据需要调整HTML):

    lib.menuChildren=humenu
    自由儿童{
    特殊=目录
    special.value={$root}
    换行=
      1=t菜单 1 { expAll=1 否=1 没有{ wrapItemAndSub=
    • |
    • stdWrap.htmlSpecialChars=1 ATagTitle.field=标题 } 第号法案 ACT.wrapItemAndSub=
    • |
    • 当前法案 CUR.doNotLinkIt=1 } 2 < .1 2.wrap=
        |
      }
      要使外观垂直/水平,必须使用CSS


      当删除第2行中的打字错误时,除了两个小细节外,它还能正常工作。1.)父母在
      导航堆叠
      包装外,2.)他们没有指定类
      导航标题
      (如在我的HTML代码片段中),而且,整个垂直链接“块”将包装在类
      活动
      内,而不仅仅是配置中的链接播放。在上面的打字稿中,我们说:“像处理当前活动页面(CUR)一样处理活动根行(ACT)中的所有页面,并对两种深度(2<.1)”进行处理。你可以随心所欲地改变行为。我从这里推荐试用和错误原则,这样您就可以了解这款HMENU的工作原理。我还向官方文档中添加了一个lin,您可以在其中找到解释的每个组件以及示例。无论如何,我解决了活动状态,但我不知道如何区别对待父项和其他项。我试图用CSS解决这个问题,但在IE8上仍然有问题,所以我更喜欢在父项中添加一个类。