TYPO3 - NO-object

时间:2016-12-06 16:06:41

标签: twitter-bootstrap-3 typoscript typo3-7.6.x

我试图找出如何在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>

目前唯一出错的是<{1}} - 对象追加TMENU .ACT - 对象。它被放在TMENU: .NO - 元素中。

我正在使用的TypoScript:

<ul class="dropdown-menu">

过去两天我做了很多尝试,我希望有人可以帮助我,或者至少让我开始,所以我知道我的错误在哪里。

非常感谢!

2 个答案:

答案 0 :(得分:1)

一般来说,ACT是在NO菜单项中内联的。将它拆开,这样你就可以在其他NO项目前面分开ACT,你需要两次渲染菜单:首先只有ACT项目,然后是NO项目。

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

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>
   }
 }

答案 1 :(得分:0)

根据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>