Typoscript 在子项后的菜单中附加内容
Typoscript append content in menu after sub-items
我想创建一个包含项目内容元素的弹出菜单。
后端的结构基本如下:
Menu1
Submenu1.1
Submenu1.2
Submenu1.3
Menu2
Submenu2.1
Submenu2.2
Submenu2.3
Menu1 和 Menu2 在页面上有内容元素。
我设法访问了内容元素,但是,这些元素在子菜单项之前呈现。之后我需要它们。
我得到的:
<div class="headeroverlay">
<div class="dropdown-overlay" id="overlay_4">
<!-- CONTENT ELEMENTS -->
<div class="contentimagesandtext">
<div class="item"><!-- Content Element 1 of Menu 1 --></div>
<div class="item"><!-- Content Element 2 of Menu 1 --></div>
</div>
<!-- SUB MENU -->
<div class="subnav-block">
<div class="subnav-link"><a href="/sub1.1">Submenu1.1</a></div>
<div class="subnav-link"><a href="/sub1.2">Submenu1.2</a></div>
<div class="subnav-link"><a href="/sub1.3">Submenu1.3</a></div>
</div>
</div>
<div class="dropdown-overlay topdropdown" id="overlay_5">
<!-- same for Menu 2 -->
</div>
</div>
但我需要切换内容和子菜单:
<div class="headeroverlay">
<div class="dropdown-overlay" id="overlay_4">
<!-- SUB MENU -->
<div class="subnav-block">
<div class="subnav-link"><a href="/sub1.1">Submenu1.1</a></div>
<div class="subnav-link"><a href="/sub1.2">Submenu1.2</a></div>
<div class="subnav-link"><a href="/sub1.3">Submenu1.3</a></div>
</div>
<!-- CONTENT ELEMENTS -->
<div class="contentimagesandtext">
<div class="item"><!-- Content Element 1 of Menu 1 --></div>
<div class="item"><!-- Content Element 2 of Menu 1 --></div>
</div>
</div>
<div class="dropdown-overlay topdropdown" id="overlay_5">
<!-- same for Menu 2 -->
</div>
</div>
到目前为止,这是我的脚本:
lib.menuOverlay = HMENU
lib.menuOverlay{
1 = TMENU
1.expAll = 1
1.NO.doNotShowLink = 1
1.NO.wrapItemAndSub = <div class="dropdown-overlay topdropdown" id="overlay_{field:uid}">|</div>
1.NO.wrapItemAndSub.insertData = 1
# Append Content Elements to stdWrap2
1.NO.stdWrap2.append = CONTENT
1.NO.stdWrap2.append {
table = tt_content
select {
pidInList.stdWrap.data = field:uid
}
wrap = <div class="contentimagesandtext">|</div>
renderObj.stdWrap.wrap = <div class="item">|</div>
}
2 = TMENU
2.insertData = 1
2.wrap = <div class="subnav-block">|</div>
2.NO.wrapItemAndSub = <div class="subnav-link">|</div>
}
我尝试将 append
添加到 wrapItemAndSub
。这会将内容元素放在子菜单之后,但是我没有将它们放在一起的包装器。
请注意,我需要包装器的 id 标记中的 Level-1 页面 UID
问题:如何强制 append
在项目之后,或者如何在我的 wrapItemsAndSub 周围添加一个包含父 UID 的包装器?
你应该爱护你的围巾。
您在 append
内容的地方使用 stdWrap2
。 append
包装了 stdWrap2
的换行字符串(它是空的),使 append
成为 stdWrap2
.
的唯一值
现在 stdWrap2
没有标记在前后分割包装的位置。所以一切都在包装内容之前。您需要 stdWrap2
:
中的拆分标记
stdWrap2 = |
stdWrap2.append = ...
另一方面:您可以使用 append
作为在内容之后获取其值的唯一包装。
受到this answer的启发,我设法做到了我需要的。
我将 COA 附加到我的第一级菜单,并将内容和另一个带有子菜单项的 HMENU 放在那里,如下所示:
lib.menuOverlay = HMENU
lib.menuOverlay {
1 = TMENU
1.expAll = 1
1.NO.doNotShowLink = 1
1.NO.wrapItemAndSub = <div class="dropdown-overlay topdropdown" id="overlay_{field:uid}">|</div>
1.NO.wrapItemAndSub.insertData = 1
1.NO.stdWrap2.append = COA
1.NO.stdWrap2.append {
10 = HMENU
10 {
special = directory
special.value.data = field:uid
1 = TMENU
1.insertData = 1
1.wrap = <div class="subnav-block">|</div>
1.NO.wrapItemAndSub = <div class="subnav-link">|</div>
}
20 = CONTENT
20 {
table = tt_content
select {
pidInList.stdWrap.data = field:uid
}
wrap = <div class="contentimagesandtext">|</div>
renderObj.stdWrap.wrap = <div class="item">|</div>
}
}
}
我想创建一个包含项目内容元素的弹出菜单。
后端的结构基本如下:
Menu1
Submenu1.1
Submenu1.2
Submenu1.3
Menu2
Submenu2.1
Submenu2.2
Submenu2.3
Menu1 和 Menu2 在页面上有内容元素。
我设法访问了内容元素,但是,这些元素在子菜单项之前呈现。之后我需要它们。
我得到的:
<div class="headeroverlay">
<div class="dropdown-overlay" id="overlay_4">
<!-- CONTENT ELEMENTS -->
<div class="contentimagesandtext">
<div class="item"><!-- Content Element 1 of Menu 1 --></div>
<div class="item"><!-- Content Element 2 of Menu 1 --></div>
</div>
<!-- SUB MENU -->
<div class="subnav-block">
<div class="subnav-link"><a href="/sub1.1">Submenu1.1</a></div>
<div class="subnav-link"><a href="/sub1.2">Submenu1.2</a></div>
<div class="subnav-link"><a href="/sub1.3">Submenu1.3</a></div>
</div>
</div>
<div class="dropdown-overlay topdropdown" id="overlay_5">
<!-- same for Menu 2 -->
</div>
</div>
但我需要切换内容和子菜单:
<div class="headeroverlay">
<div class="dropdown-overlay" id="overlay_4">
<!-- SUB MENU -->
<div class="subnav-block">
<div class="subnav-link"><a href="/sub1.1">Submenu1.1</a></div>
<div class="subnav-link"><a href="/sub1.2">Submenu1.2</a></div>
<div class="subnav-link"><a href="/sub1.3">Submenu1.3</a></div>
</div>
<!-- CONTENT ELEMENTS -->
<div class="contentimagesandtext">
<div class="item"><!-- Content Element 1 of Menu 1 --></div>
<div class="item"><!-- Content Element 2 of Menu 1 --></div>
</div>
</div>
<div class="dropdown-overlay topdropdown" id="overlay_5">
<!-- same for Menu 2 -->
</div>
</div>
到目前为止,这是我的脚本:
lib.menuOverlay = HMENU
lib.menuOverlay{
1 = TMENU
1.expAll = 1
1.NO.doNotShowLink = 1
1.NO.wrapItemAndSub = <div class="dropdown-overlay topdropdown" id="overlay_{field:uid}">|</div>
1.NO.wrapItemAndSub.insertData = 1
# Append Content Elements to stdWrap2
1.NO.stdWrap2.append = CONTENT
1.NO.stdWrap2.append {
table = tt_content
select {
pidInList.stdWrap.data = field:uid
}
wrap = <div class="contentimagesandtext">|</div>
renderObj.stdWrap.wrap = <div class="item">|</div>
}
2 = TMENU
2.insertData = 1
2.wrap = <div class="subnav-block">|</div>
2.NO.wrapItemAndSub = <div class="subnav-link">|</div>
}
我尝试将 append
添加到 wrapItemAndSub
。这会将内容元素放在子菜单之后,但是我没有将它们放在一起的包装器。
请注意,我需要包装器的 id 标记中的 Level-1 页面 UID
问题:如何强制 append
在项目之后,或者如何在我的 wrapItemsAndSub 周围添加一个包含父 UID 的包装器?
你应该爱护你的围巾。
您在 append
内容的地方使用 stdWrap2
。 append
包装了 stdWrap2
的换行字符串(它是空的),使 append
成为 stdWrap2
.
的唯一值
现在 stdWrap2
没有标记在前后分割包装的位置。所以一切都在包装内容之前。您需要 stdWrap2
:
stdWrap2 = |
stdWrap2.append = ...
另一方面:您可以使用 append
作为在内容之后获取其值的唯一包装。
受到this answer的启发,我设法做到了我需要的。
我将 COA 附加到我的第一级菜单,并将内容和另一个带有子菜单项的 HMENU 放在那里,如下所示:
lib.menuOverlay = HMENU
lib.menuOverlay {
1 = TMENU
1.expAll = 1
1.NO.doNotShowLink = 1
1.NO.wrapItemAndSub = <div class="dropdown-overlay topdropdown" id="overlay_{field:uid}">|</div>
1.NO.wrapItemAndSub.insertData = 1
1.NO.stdWrap2.append = COA
1.NO.stdWrap2.append {
10 = HMENU
10 {
special = directory
special.value.data = field:uid
1 = TMENU
1.insertData = 1
1.wrap = <div class="subnav-block">|</div>
1.NO.wrapItemAndSub = <div class="subnav-link">|</div>
}
20 = CONTENT
20 {
table = tt_content
select {
pidInList.stdWrap.data = field:uid
}
wrap = <div class="contentimagesandtext">|</div>
renderObj.stdWrap.wrap = <div class="item">|</div>
}
}
}