活动菜单项的子菜单的不同换行

时间:2016-02-09 12:44:58

标签: typo3 typoscript

我希望对活动子菜单进行不同的换行。 我的错别字:

lib.navigation.sidebar = COA
lib.navigation.sidebar {
    10 = HMENU
    10 {
        entryLevel = 0
        1 = TMENU
        1 {
            wrap = <nav class="section-subnav"><ul class="nav nav-pills nav-stacked subnav subnav-1">|</ul></nav>
            expAll = 1
            noBlur = 1
            NO = 1
            NO {
                ATagTitle.field = nav_title // title
                wrapItemAndSub = <li>|</li>
                stdWrap.wrap = |&nbsp;<span class="subnav-toggle"><i class="fa fa-angle-right"></i></span>
            }
            ACT < .NO
            ACT {
                wrapItemAndSub = <li class="active js-subnav-toggle">|</li>
            }
            CUR < .ACT
        }
        2 = TMENU
        2 {
            ###
            ### This wrap should have class "in" for active submenu:
            ### wrap = <ul class="nav nav-pills nav-stacked subnav subnav-2 collapse in">|</ul>
            ###
            wrap = <ul class="nav nav-pills nav-stacked subnav subnav-2 collapse">|</ul>

            expAll = 0
            noBlur = 1
            NO = 1
            NO {
                ATagTitle.field = nav_title // title
                wrapItemAndSub = <li>|</li>
            }
            ACT < .NO
            ACT {
                wrapItemAndSub = <li class="active">|</li>
            }
            CUR < .ACT
        }
    }
}

基本上我需要在我的包装UL中添加一个css类,如果我们有一个状态为ACT的项目。 我会很感激任何提示。

3 个答案:

答案 0 :(得分:0)

您正在寻找的是IFSUB,CURIFSUB和ACTIFSUB的项目状态 https://docs.typo3.org/typo3cms/TyposcriptReference/MenuObjects/CommonItemStates/Index.html

但是你不能用这个更改子菜单包装,你有另一个选择器(li.active&gt; ul)

然而,这里还有另一个答案可能会对你有所帮助:
Change wrap of TMENU when active menu item has a submenu

答案 1 :(得分:0)

好吧,这应该可以解决问题,然后:

        (...)
        2 = TMENU
        2 {
            wrap = <ul class="nav nav-pills nav-stacked subnav subnav-2 collapse">|</ul>
            wrap.override = <ul class="nav nav-pills nav-stacked subnav subnav-2 collapse in">|</ul>
            expAll = 0
            noBlur = 1
            NO = 1
            NO {
                ATagTitle.field = nav_title // title
                wrapItemAndSub = <li>|</li>
            }
            ACT < .NO
            ACT {
                wrapItemAndSub = <li class="active">|</li>
                 before.cObject = LOAD_REGISTER
                 before.cObject.actsubmenu = TEXT
                 before.cObject.actsubmenu.value = 1
             }
            CUR < .ACT
            wrap.override.if.isTrue.data = REGISTER:actsubmenu
        }
        (...)

也许这个帖子也可能对你有帮助:
Change wrap of TMENU when active menu item has a submenu

答案 2 :(得分:0)

我在ZURB的Foundation框架中遇到了同样的问题。使用它有点尴尬,但父菜单项上的linkWrap是你的朋友。有关详细说明,请参阅TypoScript中的注释:

10 = HMENU
10 {
    1 = TMENU
    1 {
        wrap = <ul class="menu vertical" data-accordion-menu>|</ul>
        noBlur = 1
        # Necessary to have submenus already rendered
        expAll = 1

        NO {
            wrapItemAndSub = <li>|</li>
            stdWrap.htmlSpecialChars = 1
        }

        ACT < .NO
        ACT = 1
        ACT {
            wrapItemAndSub = <li class="active">|</li>
        }

        # Add the submenu opening <ul>, if our 1st-level item has a submenu
        IFSUB = 1
        IFSUB {
            wrapItemAndSub = <li>|</li>
            linkWrap = |<ul class="menu vertical nested">
        }

        # Add the submenu opening <ul> if our 1st-level item has children and have the submenu open on load
        CURIFSUB = 1
        CURIFSUB {
            wrapItemAndSub = <li>|</li>
            linkWrap = |<ul class="menu vertical nested is-active">
        }

        # Same as above if any submenu item is currently active
        ACTIFSUB = 1
        ACTIFSUB {
            wrapItemAndSub = <li class="active">|</li>
            linkWrap = |<ul class="menu vertical nested is-active">
        }
    }

    2 = TMENU
    2 {
        # Close the previously openend <ul>
        wrap = |</ul>
        noBlur = 1
        expAll = 1

        NO {
            wrapItemAndSub = <li>|</li>
            stdWrap.htmlSpecialChars = 1
        }

        ACT < .NO
        ACT = 1
        ACT {
            wrapItemAndSub = <li class="active">|</li>
        }
    }
}