首页 > 解决方案 > 排版在子项目后的菜单中附加内容

问题描述

我想创建一个包含项目内容元素的弹出菜单。

后端的结构基本如下:

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>

}

我尝试添加appendwrapItemAndSub. 这会将内容元素放在子菜单之后,但是我没有将它们保持在一起的包装器。

请注意,我需要包装器的 id 标记中的 Level-1 Page UID

问题:如何强制在append项目之后,或者,如何在包含父 UID 的 wrapItemsAndSub 周围添加包装器?

标签: typo3typoscripttypo3-10.x

解决方案


你应该照顾你的包裹。

stdWrap2 在哪里使用你append的内容。包装(为空)的append包装字符串stdWrap2,留下append唯一的值stdWrap2
现在stdWrap2没有标记在哪里拆分包装前后。所以一切都在包装的内容之前。您需要一个拆分标记stdWrap2

stdWrap2 = |
stdWrap2.append = ...

另一方面:您可以append用作唯一的包装来在内容之后获取其值。


推荐阅读