Typoscript languageMenu alternative zu sr_language_menu

Hallo zusammen,
ich muss mich mal wieder nach etwas langer Zeit zu Wort melden.
Bis vor kurzen habe ich immer alles mit der guten EXT:sr_language_menu das Sprachmenü umgesetzt. Leider hat der Entwickler eine Kleinigkeit (in meinen Augen) vergessen …
Was ist, wenn man mal eine Sprache nicht sehen will … und dann diese verstecken muss …???
Da ich keine Lösung dazu gefunden habe, hier ein Typoscript für ein Language-Menü womit im System selber bestimmen kann wie das ausgesteuert wird.
Auch hier gibt es die normalen NO, ACT / CUR oder INACT Variationen, nur richtig als Hard Drive Data Doctor Typo-Menü.

Das Tyopscript steuert das Menü

# Sprachmenü (konstanten)
defaultLanguageID            = 7
defaultLanguageIDs           = 7,1
defaultLanguageNames         = HE,EN

Das Typoscript generiert das UL-LI Menü mit der Weiche der Sprache.
Falls keine Übersetzung vorhanden ist, habe ich ein „javascript:void(0)“ eingesetzt, damit man nicht wechseln kann 🙂

# Sprachmenü (setup)
lib.menu.language = COA
lib.menu.language {
# load language menu data
1 = LOAD_REGISTER
1 {
queryParams = &{getIndpEnv : QUERY_STRING}
queryParams {
if.isTrue.data = getIndpEnv : QUERY_STRING
insertData = 1
}
}
# Navigation Sprachwahl
10 = HMENU
10 {
wrap =
<ul id="languageNavigation" class="languageMenu">|</ul>
special = language
special.value = {$defaultLanguageIDs}
special.normalWhenNoLanguage = 0

1 = TMENU
1 {
noBlur = 1

NO = 1
NO {
wrapItemAndSub =
 	<li class="first">|</li>
 	<li class="spacer">|</li>
|*|
 	<li>|</li>
 	<li class="spacer">|</li>
|*|
 	<li class="last">|</li>
doNotLinkIt = 1
doNotShowLink = 1
stdWrap2 {
cObject = COA
cObject {

1 = LOAD_REGISTER
1 {
lParam.cObject = TEXT
lParam.cObject {
value = {$defaultLanguageIDs}
listNum {
stdWrap.data = register:count_HMENU_MENUOBJ
stdWrap.wrap = |-1
splitChar = ,
}
}
lLabel.cObject = TEXT
lLabel.cObject {
value = {$defaultLanguageNames}
listNum {
stdWrap.data = register:count_HMENU_MENUOBJ
stdWrap.wrap = |-1
splitChar = ,
}
}
}

10 = TEXT
10 {
typolink {
useCacheHash = 1
parameter.data = TSFE:id
additionalParams.dataWrap = {register:queryParams}&amp;L={register:lParam}

title {
current = 1
setCurrent = {register:lLabel}
setCurrent.insertData = 1
}

ATagParams = class="lang{register:lParam}"
ATagParams.insertData = 1
}
current = 1
setCurrent = {register:lLabel}
setCurrent.insertData = 1
}

99 = RESTORE_REGISTER
}
}
}

# Aktive gewählte Sprache
ACT &lt; .NO
      ACT = 1
      ACT.wrapItemAndSub =
 	<li class="first cur">|</li>
 	<li class="spacer">|</li>
|*|
 	<li class="cur">|</li>
 	<li class="spacer">|</li>
|*|
 	<li class="last cur">|</li>
# Keine Übersetzung vorhanden
USERDEF1 &lt; .NO
      USERDEF1 = 1
      USERDEF1 {
        wrapItemAndSub =
 	<li class="first na">|</li>
 	<li class="spacer">|</li>
|*|
 	<li class="na">|</li>
 	<li class="spacer">|</li>
|*|
 	<li class="last na">|</li>
stdWrap2 {
cObject {
10 &gt;

10 = TEXT
10 {
typolink {
parameter = javascript:void(0)
extTarget = 0
#{$defaultLanguageID}
additionalParams.dataWrap = &amp;L={register:lParam}
title {
current = 1
setCurrent = {register:lLabel}
setCurrent.insertData = 1
}
ATagParams = class="lang{register:lParam}"
ATagParams.insertData = 1
}
current = 1
setCurrent = {register:lLabel}
setCurrent.insertData = 1
}
99 = RESTORE_REGISTER
}
}
}
}
}
4 = RESTORE_REGISTER
}

Der einfache CSS-Style

#languageNavigation {list-style:none;margin:0;padding:0;}
#languageNavigation li {display:block;float:left;margin-right:5px;}
#languageNavigation li a {text-decoration:none}
#languageNavigation li.spacer {font-weight:700}
#languageNavigation li.cur a {color:#fff;}
#languageNavigation li.na a {color:#999}

Viel Spaß damit 🙂

Marc Finnern: Marc Finnern ist ein FullStack-Developer. Sein Fachgebiet ist TYPO3, WordPress und InterRed. Ob Plugin, Backend oder Frontend-Arbeiten anfallen, alles ist möglich und machbar, man braucht nur die passende Idee.

This website uses cookies.