Typoscript HMENU:在 2 级导航中获取 1 级标题

Typoscript HMENU: get level 1 title in level 2 navigation

我需要创建一个菜单,出于移动目的,在第 2 级的所有条目之前都有第 1 级的标题。示例:我的结构如下所示:

现在我希望我的导航看起来像这样:

<ul>
  <li>
    <a>Team</a>
    <div class="dropdown-menu">
      <ul>
        <li>Team</li>
        <li><a>Max</a></li>
        <li><a>Sepp</a></li>
      </ul>
    </div>
  </li>
  <li>
    <a>Projects</a>
    <div class="dropdown-menu">
      <ul>
        <li>Projects</li>
        <li><a>Project 1</a></li>
        <li><a>Project 2</a></li>
      </ul>
    </div>
  </li>
</ul>

所以我需要在级别 2 中使用级别 1 的标题。如何访问字段:parent 元素的 nav_title?

我的错别字是这样的:

temp.nav = HMENU
temp.nav {


 1 = TMENU
 1 {
      expAll = 1
        wrap = |
      noBlur = 1

        stdWrap.innerWrap.cObject = LOAD_REGISTER
        stdWrap.innerWrap.cObject {
            level1Title.field = nav_title//title
        }

  NO = 1
  NO {
        ... 
  }

 }

 2 = TMENU
    2 {
        expAll = 1
        stdWrap.dataWrap = <ul><li> {register:level1Title}</li>|</ul><a>Jetzt Mitglied werden</a></div>
        noBlur = 1
        NO = 1
        NO {
            ...
        }

    }
}

我用 LOAD_REGISTER 试过了,但没用。有什么建议么?

您想要的是 TYPO3 菜单的默认行为。您只需要设置正确的包装。在属于它的地方做包装:

temp.menu = HMENU
temp.menu {
    1 = TMENU
    1 {
        expAll = 1
        wrap = <ul>|</ul>
        NO = 1
        NO {
            wrapItemAndSub = <li>|</li>
        }
    }
    // as you have no specific wrapping all levels can be generated the same:
    2 < .1
    3 < .2
}

如果你想在每一层都有特定的包装,你可以在复制后调整它(在这个例子中你可以看到包装的来源)

temp.menu = HMENU
temp.menu {
    1 = TMENU
    1 {
        wrap = <ul class="level1">|</ul>
        NO = 1
        NO {
            wrapItemAndSub = <li class="lev1">|</li>
        }
    }
    2 < .1
    2 {
        wrap = <ul class="level2">|</ul>
        NO.wrapItemAndSub = <li class="lev2">|</li>
    }
    3 < .2
    3 {
        wrap = <ul class="level3">|</ul>
        NO.wrapItemAndSub = <li class="lev3">|</li>
    }
} 

.


编辑:问题澄清后:
在菜单中使用 LOADREGISTER 会导致混乱,因为菜单项不是内联递归生成的。

如果您想重复菜单项,您应该就地生成它。
因此,您需要拆分干净的包装纸并使用 soem 增强的菜单魔法。

temp.menu = HMENU
temp.menu {
    1 = TMENU
    1 {
        wrap = <ul class="level1">|</ul>
        NO = 1
        NO.wrapItemAndSub = <li>|</li>

        // only for menuitems which contains further pages:
        IFSUB < .NO
        IFSUB {
            // beginning the part of the submenu
            after.cObject = TEXT
            after.cObject {
                field = nav_title // title
                wrap = <div class="dropdown-menu"><ul><li>|</li>
            }
        }
    }
    2 < .1
    2 {
        // no beginning in wrap needed as it is done at level 1
        wrap = |</ul></div>
    }
}

更多关卡需要额外处理。例如:2.IFSUB >3.wrap = <ul>|</ul>

注意:如果您想要一个带有缩进的干净 html,您需要在拼写错误中使用 .noTrimWrap 和多行值。