2015-05-10 2 views
0

Я создал языковое меню со многими HMENU, наложенными на COA. Он работает так, как должен, но я хочу скрыть все языковое меню, если на текущей странице нет перевода. Я не знаю, как это решить. Использование USERDEF1 и USERDEF2 определяет только свойства для не существующего языкового элемента.Скрыть языковое меню typoscript

Вот мои 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

я даю ему еще одну попытку, и я нашел решение с другим HMENU и использование USERDEF1. Если для текущей страницы нет перевода, мой вывод представляет собой определенную строку. Если эта строка задана, я могу использовать условие текучей среды для управления выходом всего языкового меню.

Мое решение выглядит следующим образом:

TS-Setup

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

Состояние Fluid

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

Это прекрасно работает для меня.

Смежные вопросы