Typoscript HMENU:在 2 级导航中获取 1 级标题
Typoscript HMENU: get level 1 title in level 2 navigation
我需要创建一个菜单,出于移动目的,在第 2 级的所有条目之前都有第 1 级的标题。示例:我的结构如下所示:
- 团队
- 最大
- 塞普
- 项目
- 项目 1
- 项目 2
现在我希望我的导航看起来像这样:
<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
和多行值。
我需要创建一个菜单,出于移动目的,在第 2 级的所有条目之前都有第 1 级的标题。示例:我的结构如下所示:
- 团队
- 最大
- 塞普
- 项目
- 项目 1
- 项目 2
现在我希望我的导航看起来像这样:
<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
和多行值。