隐藏语言菜单typoscript

时间:2015-05-10 08:50:51

标签: typoscript typo3-6.2.x

我创建了一个语言菜单,其中许多HMENU都包含在COA上。它可以正常工作,但如果当前页面上没有翻译,我想隐藏整个语言菜单。 我不知道如何解决它。 USERDEF1和USERDEF2的使用仅定义了非现有语言项的属性。

这是我的TS:

# Sprachmenü
lib.languagemenu = COA
lib.languagemenu {

wrap = <div class="langmenu-box">|</div>

# 1. Menü für die Textausgabe zur Auswahl
10 = HMENU
10 {
   special = language
   special.value = {$lang.keys}
   special.normalWhenNoLanguage = 0

   1 = TMENU
   1  {

      // Normal-Zustand nicht anzeigen
      NO = 1
      NO.doNotShowLink = 1


      // Aktiven Zustand zusammenstellen
      ACT = 1
      ACT {
       allWrap = <span class="hideMobile">|</span>
       stdWrap.override.cObject = TEXT
       stdWrap.override.cObject.value = Wählen Sie Ihre Sprache || Choose your language
       stdWrap.noTrimWrap = | | |
       doNotLinkIt = 1
      }



  }
}

// 2. Menü zur Ausgabe des aktuell gewählten Sprache
20 = HMENU
20 {
  special = language
  special.value = {$lang.keys}
  special.normalWhenNoLanguage = 0

  1 = TMENU
  1 {

    stdWrap.outerWrap = <div class="langmenu">|

      // Normal-Zustand nicht anzeigen
      NO = 1
      NO.doNotShowLink = 1

      // Aktiven Zustand zusammenstellen
      ACT = 1
      ACT {
           allWrap = <button style="background:url(|) transparent no-repeat"><span class="caret-right"></span></button>
           stdWrap.override.cObject = TEXT
           stdWrap.override.cObject {
             value= fileadmin/images/DE_Flag_30x30.png || fileadmin/images/GB_Flag_30x30.png
           }
           doNotLinkIt = 1
      }
  }
}

// 3. Menü zur Erstellung des Dropup-Feldes
30 = HMENU
30 {

    special = language
    special.value = {$lang.keys}
    special.normalWhenNoLanguage = 0

    wrap = <ul class="dropup-menu">|</ul></div>

    1 = TMENU
    1 {
        // Normal Zustände zur Anzeige aller verfügbaren Sprachen
        NO = 1
        NO {
           allWrap = <li>|</li>
           stdWrap.override.cObject = IMAGE
           stdWrap.override.cObject {
            file = fileadmin/images/DE_Flag_30x30.png || fileadmin/images/GB_Flag_30x30.png
           }
           stdWrap.typolink.parameter.data = page:uid
           stdWrap.typolink.additionalParams = &L=0 || &L=1
           stdWrap.typolink.addQueryString = 1
        }

        // Aktiven Zustand ausblenden, da im Dropup-Feld nicht gewünscht
        ACT = 1
        ACT.doNotShowLink = 1
   }
}
}

此致

1 个答案:

答案 0 :(得分:1)

我再试一次,我找到了另一个HMENU和USERDEF1的解决方案。如果当前页面没有翻译,我的输出是一个特定的字符串。 如果给出了这个字符串,我可以使用流体条件来管理整个语言菜单的输出。

我的解决方案如下:

<强> TS-设置

lib.alternateLanguage = HMENU
lib.alternateLanguage {
 special = language
 special.value = {$lang.keys}
 special.normalWhenNoLanguage = 0

 wrap = |

 1 = TMENU
 1 {

      NO = 1
      NO.allWrap = |
      NO.doNotShowLink = 1

      USERDEF1 = 1
      USERDEF1.allWrap = |
      USERDEF1.stdWrap.override.cObject = TEXT
      USERDEF1.stdWrap.override.cObject.value = no
      USERDEF1.doNotLinkIt = 1
 }
}

流体状况

<f:if condition="{f:cObject(typoscriptObjectPath: 'lib.alternateLanguage')} == \"no\"">
    <f:then></f:then>
    <f:else><f:cObject typoscriptObjectPath="lib.languagemenu" /></f:else>
</f:if>

这对我来说很好。