Zum Inhalt springen

language abfrage (if) um verschiedene ts zu benutzen

Erstellt am 15. Dezember 2011 · 2 Antworten · letzte Antwort am 16. Dezember 2011

Tags: Frage

Shatti ·

hey leute,

also ich hab schon ein wenig herumgesucht wie man die momentane sprache im frontend überprüfen kann, allerdings steige ich nicht durch die verwendung von if-abfragen in typoscript.

ich habe eine typo3 seite, die sich auf deutsch oder englisch schalten lässt.

<a href="index.php?id= | &L=0"><img src="fileadmin/images/de.jpg"></a>

für deutsch und

<a href="index.php?id= | &L=1"><img src="fileadmin/images/gb.jpg">

die texte auf den seiten lassen sich ganz easy austauschen wenn man umschaltet, allerdings macht das ts, das mein menü erzeugt mir probleme.

folgendes ts habe ich um mein subnavi aufzubauen:

[globalVar = GP:L = 0]
config.sys_language_uid = 0
config.language = de
config.locale_all = de_DE

[globalVar = GP:L = 1]
config.sys_language_uid = 1
config.language = en
config.locale_all = en_EN
[global]

10.subparts.GRAFIK = HMENU
  10.subparts.GRAFIK {
    special = list   
    special.value = 6,7,8,9,125,11
    1 = GMENU
    1 {
      noBlur = 1
      wrap = |
      NO = 1
      NO {  
        imgParams = class="first" || class="middle" || class="last" || class="first" || class="middle" || class="last"
        #imgParams = border="0"
        altImgResource.import = uploads/media/
        altImgResource.import.field = media
        # 0 steht für das 1. Bild in den Seiteneigenschaften
        altImgResource.import.listNum = 3
        imgParams.titleText = TEXT
        imgParams.titleText.field = title
        ATagTitle.field = title
      }
      
      ACT = .1.NO
      ACT {
        imgParams = class="list_menu" || class="list_menu" || class="list_menu" || class="list_menu" || class="list_menu" || class="list_menu"
        #imgParams = border="0"
        altImgResource.import = uploads/media/
        altImgResource.import.field = media
        # 0 steht für das 1. Bild in den Seiteneigenschaften
        altImgResource.import.listNum = 4
        imgParams.titleText = TEXT
        imgParams.titleText.field = title
      }
      
      RO = .1.NO
      RO {
        imgParams = class="list_menu" || class="list_menu" || class="list_menu" || class="list_menu" || class="list_menu" || class="list_menu"
        #imgParams = border="0"
        altImgResource.import = uploads/media/
        altImgResource.import.field = media
        # 0 steht für das 1. Bild in den Seiteneigenschaften
        altImgResource.import.listNum = 4
        imgParams.titleText = TEXT
        imgParams.titleText.field = title
      }
    }
  }

wie kann ich nun im ts sagen das: wenn man auf deutsch(standart) geschaltet hat, soll er aus uploads/media die bilder 3 und 4 holen und wenn man auf englisch ist die bilder 5 und 6?

hoffe man versteht was ich erreichen möchte.

außerdem ist mir eben aufgefallen, dass es nicht nur bei diesem menü ist, sondern auch bei meiner hauptnavigation die aus texten besteht welche im seitentitel stehen.

gruß shatti

Chrissli ·

Hallo Shatti,

das geht bestimmt auch anders / einfacher
aber mir würde jetzt spontan die Option einfallen,
das du im TS wie jetzt den Standardfall definierst und
dann, ebenso wie du deine sprachspezifische Config definierst,
die betreffenden Einstellungen überschreibst.
Also:

10.subparts.GRAFIK = HMENU
10.subparts.GRAFIK {
   ... deine menüeinstellungen usw
}
[globalVar = GP:L = 1]
10.subparts.GRAFIK.1.NO.altImgResource.import.listNum = 4
10.subparts.GRAFIK.1.RO.altImgResource.import.listNum = 5
[global]

Den Selektor für die GP kannst du öfters im Code verwenden, der macht nichts
anderes als zu prüfen ob eine GET/POST-Variable ( HIER L ) den angegebenen Wert hat ( z.b. 1)

Shatti ·

Danke dir Chrissli,

ich habe es jetzt so umgesetzt:

  config {
  language = de
  sys_language_uid = 0
  sys_language_mode =
  sys_language_overlay = hideNonTranslated
  locale_all = de_DE
  linkVars = L(1-3)
  uniqueLinkVars = 1
}

10.subparts.GRAFIK = HMENU
10.subparts.GRAFIK {
   # menüeinstellungen
}

[globalVar = GP:L = 1]
config.sys_language_uid = 1
config.language = en
config.locale_all = en_EN
10.subparts.GRAFIK.1.NO.altImgResource.import.listNum = 4
10.subparts.GRAFIK.1.RO.altImgResource.import.listNum = 5
[global]

Wenn ich mein TS so einrichte, nimmt Typo3 die Nummer 4 und 5 als Standart. Warum?

EDIT: Eigentlich hat sich das Problem gerade erledigt, weil ich herausgefunden habe, dass wenn ich die Seite auf Englisch umschalte ein weiterer Recourcenordner zur verfügung steht, in dem ich die englischen Bilder speichern kann.
Wenn dort Bilder eingefügt werden, nimmt Typo3 diese, wenn keine im Resourcenordner sind, zieht Typo3 sich die Bilder aus dem Deutschen Resourcenordner.
Trotzdem wüsste ich gerne wie man sowas im TS machen könnte, kann ich später bestimmt mal gut gebrauchen.