blog.exotec

TYPO3 . XHTML/CSS . JavaScript/AJAX . iPhone/iOS

Extended TMENU und Mehrsprachigkeit

Wer das Extended TMENU für mehrsprachige Seiten nutzen will, hat sicher bemerkt das die ID der jeweiligen Sprache nicht übergeben wird und man immer wieder bei der Standardsprache landet sobald man die Seite wechselt.

Ursache dafür ist schlicht und ergreifend, dass in dem zerlegten Link das &L=xyz fehlt. Nachdem ich erfolglos versucht habe die LangID aus der sys_landuage Tabelle auszulesen, habe ich eine andere Möglichkeit gefunden die ID in den Link mit hinein zu bekommen.

Diese ist absolut nichts neues, aber manchmal dauert es etwas bis man dahinter kommt. Auf diese Art und Weise kann man auch beliebige marker mit mehrsprachigen Inhalten füllen.

Was allerdings nicht jeder weiß, und das wird im Folgenden auch gezeigt, ist wie man mit einer scheinbar auskommentierten Zeile im Constants Code, spätere Änderungen an Constantswerten bequem und einfach über den Constants Editor der Template Tools vornehmen kann.

Kommen wir aber erstmal zum mehrsprachigen TMENU. Mit diesem Code wird die jeweilige sys_language_uid übergeben.

subparts.nav = HMENU
subparts.nav.1 = TMENU
subparts.nav.1 {
expAll = 1
wrap = <ul>|</ul>
NO {
beforeWrap = <li id="first">| || <li id="second">|
|| <li id="third">| ||<li id="fourth">| || <li
id="fifth">| || <li id="sixth">|
linkWrap = |
doNotShowLink = 1
before.cObject = TEXT
before.cObject.field = uid
before.cObject.dataWrap = <a href="index.php?id=|" accesskey="{field:tx_govaccessibility_accesskey}"
title="{field:title}:{field:subtitle} ACCESSKEY: {field:tx_govaccessibility_accesskey}">
#before.cObject.dataWrap = <a href="|.html" accesskey="{field:tx_govaccessibility_accesskey}"
title="{field:title}:{field:subtitle} ACCESSKEY: {field:tx_govaccessibility_accesskey}">
after.cObject = TEXT
after.cObject.field = title//nav_title
after.cObject.htmlSpecialChars = 1
after.cObject.wrap = |</a>
wrapItemAndSub = |</li> || |</li> || |</li>|||</li>
|| |</li> || |</li>
}

ACT < .NO
ACT = 1
ACT {
beforeWrap = <li id="first_act">| || <li id="second_act">|
|| <li id="third_act">| ||<li id="fourth_act">|
|| <li id="fifth_act">| || <li id="sixth_act">|
}
}

[globalVar = GP:L = {$lang_en.value}]
subparts.nav = HMENU
subparts.nav.1 = TMENU
subparts.nav.1 {
expAll = 1
wrap = <ul>|</ul>
NO {
beforeWrap = <li id="first">| || <li id="second">|
|| <li id="third">| ||<li id="fourth">| || <li
id="fifth">| || <li id="sixth">|
linkWrap = |
doNotShowLink = 1
before.cObject = TEXT
before.cObject.field = uid
before.cObject.dataWrap = <a href="index.php?id=|&L={$lang_en.value}" accesskey="{field:tx_govaccessibility_accesskey}"
title="{field:title}:{field:subtitle} ACCESSKEY: {field:tx_govaccessibility_accesskey}">
#before.cObject.dataWrap = <a href="|.html&L={$lang_en.value}" accesskey="{field:tx_govaccessibility_accesskey}"
title="{field:title}:{field:subtitle} ACCESSKEY: {field:tx_govaccessibility_accesskey}">
after.cObject = TEXT
after.cObject.field = title//nav_title
after.cObject.htmlSpecialChars = 1
after.cObject.wrap = |</a>
wrapItemAndSub = |</li> || |</li> || |</li>|||</li>
|| |</li> || |</li>
}

ACT < .NO
ACT = 1
ACT {
beforeWrap = <li id="first_act">| || <li id="second_act">|
|| <li id="third_act">| ||<li id="fourth_act">|
|| <li id="fifth_act">| || <li id="sixth_act">|
}
}
[global]

Es ist wie gesagt ganz einfach und sollte wohl keiner weiteren Erklärung bedürfen. Wer es etwas eleganter lösen möchte kann mal dieses Thema im Forum ansehen.

Was aber auch aufallen sollte und nicht sofort Sinn macht ist die TS Variable &L={$lang_en.value}. Warum nicht gleich die ID direkt im Setup angeben und statt dessen diese in den Constants definieren?

Hiermit soll nur einmal kurz demonstriert werden, wie man das Typo3 Framework nutzen kann um gewisse Änderungen am Template nicht immer in dem Constants oder Setup Feld vornehmen zu müssen. Man kann die Anpassung gewisser Parameter dann ganz einfach im Constants Editor vornehmen. Ich zeige das hier mal am Beispiel von Websitesprachen deren ID´s man über den Constants Editor anlegen kann.

Diese Zeilen kommen in das Constants Feld:

language_de {
#cat=mein_template/language; type=int+; label=ID DE: Hier geben Sie bitte die ID der Websitesprache deutsch an.
value = 0
}
language_en {
#cat=mein_template/language; type=int+; label=ID EN:Hier geben Sie bitte die ID der Websitesprache englisch an.
value = 1
}

Danach findet man im Constants Editor in der Category: MEIN_TEMPLATE die notwendigen Felder um die ID´s der einzelnen Sprachen anzugeben.

Constants Editor MEIN_TEMPLATE

Kommentar schreiben:


92,772 Spam-Kommentare
blockiert von
Akismet