隐藏语言菜单拼写

Hide language menu typoscript

我创建了一个语言菜单,其中包含许多包装在 COA 上的 HMENU。它可以正常工作,但如果当前页面上没有翻译,我想隐藏整个语言菜单。 我不知道如何解决它。使用 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
   }
}
}

此致

我再试一次,我找到了另一个 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>

这对我来说很好。