简体   繁体   English

Typo3子菜单TMENU,如果HMENU pid等于

[英]Typo3 Submenu TMENU with if, when HMENU pid is equals

I have an HMENU with a submenu and I want to add a third submenu, if the main menu point has the uid xxx. 我有一个带有子菜单的HMENU,如果主菜单点具有uid xxx,我想添加第三个子菜单。

If I implement this TypoScript Code, all third submenus will be shown: 如果我实施此TypoScript代码,则将显示所有第三个子菜单:

3 = TMENU
3 {
    stdWrap.outerWrap = <div class="submenu-third-level"><ul class='submenu'>|</ul></div>
    stdWrap.outerWrap.override = <div class="submenu-third-level show"><ul class='submenu'>|</ul></div>
    stdWrap.outerWrap.override.if {
        value.data = field:pid
        isInList = 588
    }
    stdWrap.insertData = 1
    NO.wrapItemAndSub = <li class="menu-item">|</li>

    ACT = 1
    ACT{
        wrapItemAndSub = <li class="menu-item active">|</li>
    }

    SPC = 1
    SPC {
       doNotLinkIt = 1
       doNotShowLink = 1
       allWrap = </ul><ul class='submenu'>
    }
}

Thus, all submenus of submenus will be shown. 因此,将显示子菜单的所有子菜单。 But I want to only show the submenus of submenus in HMENU PID XXX. 但是我只想在HMENU PID XXX中显示子菜单的子菜单。

Is there a possibility to do it like: 是否有可能这样做:

   3 = TMENU
    3 {
        stdWrap.outerWrap = <div class="submenu-third-level"><ul class='submenu'>|</ul></div>
        stdWrap.outerWrap.override = <div class="submenu-third-level show"><ul class='submenu'>|</ul></div>
        stdWrap.outerWrap.override.if {
            value.data = field:pid
            isInList = 588
        }
        stdWrap.insertData = 1
        NO.wrapItemAndSub = <li class="menu-item">|</li>

        ACT = 1
        ACT{
            wrapItemAndSub = <li class="menu-item active">|</li>
        }

        SPC = 1
        SPC {
           doNotLinkIt = 1
           doNotShowLink = 1
           allWrap = </ul><ul class='submenu'>
        }

        if {
            value.data = field:pid
            equals = xxx
        }
    }

Look you better use new HMENU like: 看起来您最好像这样使用新的HMENU:

lib.mainmenu = HMENU
...{
1 = TMENU
...
2 = TMENU
} # so just two levels
lib.tempmenu <. lib.mainmenu # just save your menu

[PIDinRootline = xxx] 
#or [globalVar = TSFE:id=xxx]
lib.mainmenu <. lib.tempmenu
lib.mainmenu.3 = TMENU # just add 3d submenu. Prev menu haven't it
[global]

If not, please leave comment 如果没有,请发表评论

thanks for your response. 感谢您的答复。 I solved in a different way and it works great. 我以不同的方式解决了问题,效果很好。 My solution: 我的解决方案:

3 = TMENU
3 {
    stdWrap.outerWrap = <div class="submenu-third-level"><ul class='submenu'>|</ul></div>
    stdWrap.if {
        value.data = field:pid
        isInList = {$menu.thirdSubmenuList}
    }

    NO.wrapItemAndSub = <li class="menu-item">|</li>

    ACT = 1
    ACT{
        wrapItemAndSub = <li class="menu-item active">|</li>
    }

    SPC = 1
    SPC {
       doNotLinkIt = 1
       doNotShowLink = 1
       allWrap = </ul><ul class='submenu'>
    }
}

The condition decide, if the menu will be displayed or not. 条件决定是否显示菜单。

best regards 最好的祝福

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM