Ich bin heute vor der Herausforderung gestanden einen Sprachwechsler mit reinem TypoScript zu implementieren, welcher sowohl einen Active-State besitzt, als auch auf die Domain der jeweiligen Sprache wechselt. Die Lösung möchte ich euch natürlich nicht vorenthalten und habe ein kleines Copy-and-Paste-Snippet zusammengestellt.
# Sprach-Links erzeugen temp.langMenuDE = COA temp.langMenuDE { stdWrap.wrap = <li>|</li> 10 = TEXT 10.value = domain.de # die deutschsprachige Domain 10.wrap = <a href="http://www.|/ 20 = TEXT 20.typolink { parameter.data = TSFE:id returnLast = url additionalParams = &L=3 addQueryString = 1 addQueryString.method = GET addQueryString.exclude = id # muss gesetzt werden, da ansonsten der id-Parameter 2x auftaucht } 30 = TEXT 30.value = DEU 30.wrap =">|</a> } temp.langMenuNL < temp.langMenuDE temp.langMenuNL { 10.value = domain.nl 20.typolink.additionalParams = &L=0 30.value = NL } temp.langMenuFR < temp.langMenuDE temp.langMenuFR { 10.value = domain.fr 20.typolink.additionalParams = &L=2 30.value = FR } # Menü zusammenbasteln lib.langMenu = COA lib.langMenu { wrap = <div class="langmenu"><ul>|</ul></div> 10 < temp.langMenuNL 20 < temp.langMenuDE 30 < temp.langMenuFR } # Active-State anhand von Domain bzw. L setzen # falls man neu auf die Site gekommen ist [globalVar = GP:L = 0] OR [globalString = IENV:HTTP_HOST = www.domain.nl] lib.langMenu.10 = TEXT lib.langMenu.10 { value = NL stdWrap.wrap = <li class="act">|</li> } [globalVar = GP:L = 3] OR [globalString = IENV:HTTP_HOST = www.domain.de] lib.langMenu.20 = TEXT lib.langMenu.20 { value = DEU stdWrap.wrap = <li class="act">|</li> } [globalVar = GP:L = 2] OR [globalString = IENV:HTTP_HOST = www.domain.fr] lib.langMenu.30 = TEXT lib.langMenu.30 { value = FR stdWrap.wrap = <li class="act">|</li> } [global] |
Damit beim einstieg über die enstprechende Domain (.de, .fr, .nl) auch der richtige L-Parameter gesetzt wird, habe ich die Extension icti_language_on_domain verwendet.
Falls jemand nähere Erklärungen benötigt, postet doch bitte einen Comment, ich erkläre gerne den ein oder anderen Schritt im Detail!