Zum Inhalt springen

Aktive Sprache ausblenden

Erstellt am 27. Januar 2010 · 2 Antworten · letzte Antwort am 28. Januar 2010

Tags: Frage

vanlent ·

Hallo liebe Gemeinde,

bin jetzt schon seit Wochen mit dem Problem "schwanger" und finde keine Lösung. Obendrein verstehe ich mein zusammenkopiertes TypoScript nur teilweise.
Mein Ziel ist es, dass nur die nicht aktive Sprache gezeigt wird, habe den One-Tree-Modus benutzt.
Vielleicht gibts eine einfache Lösung, um endlich voranzukommen?

## temp.langmenu
temp.langmenu = COA
temp.langmenu {
        wrap = <ul class="langmenu">|</ul>
        10 = HTML
        10{
                value = Deutsch
                value.wrap = <li>|</li>
                value.typolink.parameter.data = page:uid
                value.typolink.additionalParams = &L=0
                }
        20 < temp.langmenu.10
        20{
                value = English
                value.typolink.additionalParams = &L=1
          }
}

[globalVAR = GP:L=0]
temp.langmenu.10.value.typolink >
[global]

[globalVar = GP:L=1]
temp.langmenu.20.value.typolink >
[global]

page.10.subparts.SPRACHE < temp.langmenu

# SprachVariable L initialisieren
config.linkVars = L
config.uniqueLinkVars = 1

# Standardsprache UID 0 -> de
config.sys_language_uid = 0
config.language = de
config.locale_all = de-DE
config.htmlTag_langKey = de-DE

# engl, sys_language.uid = 1
[globalVar = GP:L = 1]
config.sys_language_uid = 1
config.language = de
config.locale_all = en-UK
config.htmlTag_langKey = en-UK
[global]

#Hiermit kann die aktuelle Sprache ausgeblendet werden
# don’t show current language if showCurrent=0
# showCurrent = 0
karlchen ·

hallo

durch die farbliche Hervorhebung in deinem TypoScript part sieht man schon einen kleinen Fehler.

[globalVAR = GP:L=0]
temp.langmenu.10.value.typolink >
[global]

das "globalVAR" muss genauso geschrieben werden wie bei der anderen Bedingung.

[globalVar = GP:L = 1]
config.sys_language_uid = 1
//config.language = de
config.language = en

Hier sollte auch noch ein "en" hin.

was dein TypoScript angeht(mal im schnell durchlauf 😉 ):

du baust erst ein Temporäres Objekt zusammen (temp.langmenu)
in diesem definierst du 2 Links (10. und 20.).

Die Links verlinken auf die Seite auf der du dich im Frontend gerade befindest.(typolink.parameter.data = page:uid )

Das Object 10 kopierst du in das Objekt 20, damit es keine exakte Kopie ist, überschreibst du 2 Sachen (Zeile 14 und 15)

An beide Links hängst du einen Parameter den TYPO3 verarbeiten soll "&L=0" und "&L=1".

Danach nutzt du eine "Bedingung", auf Grundlage dieser Bedingungen kann man Inhalte oder Objekte ändern.

Deine Bedingungen besagen, wenn eine URL mit L=0 aufgerufen wird, dann entferne den Link im temp.langmenu mit "temp.langmenu.10.value.typolink >"

Zum Schluss kopierste du das temp.langmenu Objekt, welches durch die Bedingungen geändert wurde, in den subparts SPRACHE.

Danach definierst du mit "config.sys_language_uid = 0" welche Sprache im Frontend ausgegeben werden soll, in dem Fall Deutsch.

Jetzt kommt wieder eine Bedingung, Wenn L=1 dann ändere das "config.sys_language_uid = 0" in "config.sys_language_uid =1", damit gibt TYPO3 dann die englischen Inhalte aus.

vanlent ·

Danke Karlchen,

für die prompte Antwort (und die Erklärungen). Leider haben die Korrekturen nix bewirkt. Habe noch mit den Zuständen NOR ACT und CUR experimentiert, aber es klappt nicht.
Gibt es keine elegantere Lösung als mein Konstrukt mit den Globals?
Das kommt mir zu sehr um die Ecke gedacht vor!

Habe jetzt eine Lösung gefunden, die mir zwar nicht elegant vorkommt, aber funktioniert:

Platziere zuerst den Startzustand,
Deutsch ist angewählt, Englisch steht als Link zur Verfügung.

Danach zwei Bedingungen:
Sollte der User im englischen Teil unterwegs sein, gibts den deutschen Link.
und im deutschen Teil den Englischen.

Dieses Listenkonstrukt ist zudem überflüssig geworden, das werde ich noch rausnehmen, und mit dem wrap die jeweilige Flagge aufrufen.

## temp.langmenu | Englisch beginnt
temp.langmenu = COA
temp.langmenu {
        wrap = <ul class="langmenu">|</ul>
        10 = HTML
        10{
                value = <img src="typo3/gfx/flags/gb.gif" alt="" />
                value.wrap = <li>|</li>
                value.typolink.parameter.data = page:uid
                value.typolink.additionalParams = &L=1
        }
      }


page.10.subparts.SPRACHE < temp.langmenu



## temp.langmenu_D
[globalVar = GP:L=1]
temp.langmenu_D = COA
temp.langmenu_D {
        wrap = <ul class="langmenu">|</ul>
        5 = HTML
        5{
                value = <img src="typo3/gfx/flags/de.gif" alt="" />
                value.wrap = <li>|</li>
                value.typolink.parameter.data = page:uid
                value.typolink.additionalParams = &L=0
        }
        }
        
page.10.subparts.SPRACHE < temp.langmenu_D
[global]

## temp.langmenu_EN
[globalVar = GP:L=0]
temp.langmenu_EN = COA
temp.langmenu_EN {
        wrap = <ul class="langmenu">|</ul>
        10 = HTML
        10{
                value = <img src="typo3/gfx/flags/gb.gif" alt="" />
                value.wrap = <li>|</li>
                value.typolink.parameter.data = page:uid
                value.typolink.additionalParams = &L=1
        }
        }
page.10.subparts.SPRACHE < temp.langmenu_EN
[global]