TYPO3 - TypoScript TMENU ACT-object before NO-object

TYPO3 - TypoScript TMENU ACT-object before NO-object

我正在尝试找出如何将 TMENU: .ACT-对象放在 TMENU: .NO-对象之前,因为我正在尝试实现 Bootstrap 3.3.7 下拉列表以活动项目为前导 <li>-元素的菜单结构。

目前我被困在这部分,我希望任何人都可以让我开始完成这个结构。我要实现的结构如下:

<ul class="nav navbar-nav navbar-right pull-right" role="menu">
    <li class="dropdown language-menu lang eng">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
            <span>English</span>
            <span class="caret"></span>
        </a>
        <ul class="dropdown-menu">
            <li class="lang fr"><a href="#"><span>Fran&ccedil;ais</span></a></li>
            <li class="lang de><a><span>Deutsch</span></a></li>
            <li class="lang es><a><span>Espa&ntilde;ol</span></a></li>
            <li class="lang pt><a><span>Portugues</span></a></li>
            <li class="lang nl><a><span>Nederlands</span></a></li>
        </ul>
    </li>
</ul>

目前 唯一 出错的地方是 TMENU .ACT 对象附加了 TMENU: .NO 对象。它被放置在 <ul class="dropdown-menu">-元素中。

我正在使用的 TypoScript:

20 = HMENU
20 {
    special = language
    special.value = 0,1,2,3,4,5

    current = 1

    wrap =  <ul class="nav navbar-nav navbar-right pull-right" role="menu">|</ul>

    1 = TMENU
    1 {
        wrap = <ul class="dropdown-menu">|</ul>

        NO = 1
        NO {
            allWrap = <li class="lang eng">|</li> || <li class="lang nl">|</li> || <li class="lang fr">|</li> || <li class="lang de">|</li> || <li class="lang es">|</li> || <li class="lang pt">|</li>
            ATagParams =
            ATagBeforeWrap = 1
            linkWrap = <span>|</span>
        }

        #ACT < .NO
        ACT = 1
        ACT {
            allWrap = <li class="dropdown language-menu lang eng">|</li>
        }
    }
}

过去两天我尝试了很多,我希望任何人都可以帮助我,或者至少让我开始,这样我就知道我的错误在哪里。

非常感谢!

一般来说,ACT 是内嵌在 NO 菜单项中的。将其拆分,以便将 ACT 分隔在其他 NO 项目之前,您需要渲染菜单两次:首先仅 ACT 项目,然后是 NO 项目。

因为你想在它周围有一个 UL 标签,我会尝试使用那个 UL 包装的 COA,然后是两个菜单,其中第一个只用他们的 LI 包装呈现 ACT,第二个只用他们的 NO LI-换行。

20 = COA
20 {
  wrap =  class="nav navbar-nav navbar-right pull-right" role="menu">|</ul>
  10 = HMENU
  10 {
    special = language
    special.value = 0,1,2,3,4,5
    current = 1
    1 = TMENU
    1 {
      ACT = 1
      ACT.allWrap (
          <li class="dropdown language-menu lang eng">|</li> ||
          <li class="dropdown language-menu lang nl">|</li> ||
          <li class="dropdown language-menu lang fr">|</li> ||
          <li class="dropdown language-menu lang de">|</li> ||
          <li class="dropdown language-menu lang es">|</li> ||
          <li class="dropdown language-menu lang pt">|</li>
      )
      NO.doNotShowLink = 1
    }
  }
  20 < .10
  20 {
    ACT.doNotShowLink = 1
    NO >
    NO = 1
    NO {
      allWrap (
         <li class="lang eng">|</li> || 
         <li class="lang nl">|</li> || 
         <li class="lang fr">|</li> || 
         <li class="lang de">|</li> || 
         <li class="lang es">|</li> || 
         <li class="lang pt">|</li>
      )
      ATagParams =
      ATagBeforeWrap = 1
      linkWrap = <span>|</span>
   }
 }

根据 Bernd Wilke 的回答,这最终对我有用:

lib.menuLanguage = COA
lib.menuLanguage {
    10 = HMENU
    10 {
        special = language
        special.value = 0,1
        1 = TMENU
        1 {
            ACT = 1
            ACT {
                linkWrap = <li class="extra"><a href="#" class="dropdown-toggle" data-toggle="dropdown">| <b class="caret"></b></a><ul class="dropdown-menu">
                doNotLinkIt = 1
                stdWrap {
                    override = EN || DE
                }            
            }
            NO = 1
            NO.doNotShowLink = 1
        }
    }
    20 < .10
    20.1 {
        ACT >
        NO >
        NO = 1
        NO {
            doNotLinkIt = 1
            linkWrap = <li>|</li>
            stdWrap {
                override = EN || DE
                typolink {
                    parameter.data = page:uid
                    additionalParams = &L=0 || &L=1
                    ATagParams = hreflang="en-GB" || hreflang="de-DE"
                    addQueryString = 1
                    addQueryString.exclude = L,id,no_cache
                    addQueryString.method = GET
                    no_cache = 0
                }
            }
        }
    }
    wrap = |</ul></li>
}

使用此模板:

<ul class="nav navbar-nav navbar-right">
    <f:cObject typoscriptObjectPath='lib.menuLanguage' />
</ul>