Guten Tag allerseits.
Ich habe mal wieder ein kleines Problem.
Ich verwende Typo3 4.5.4
RealURL ist noch nicht installiert, soll aber bald kommen.
Die Sache ist die: Die Webseite soll in 2 Sprachen verfügbar sein:
Deutsch(Standard) und Französisch.
Das klappt auch alles wunderbar.(Manuelles Aufrufen per URL)
Nur möchte der Kunde, dass im Sprachauswahlmenü nur die Inaktive Sprache verfügbar ist.
Sprich:
Wenn ich auf der deutschen Seite bin soll Französisch stehen.
Wenn ich auf der Französischen bin soll Deutsch stehen.
Natürlich könnte ich das über ein PHP-Script lösen, allerdings habe ich mich bis jetzt noch nie wirklich mit der API von Typo3 bekannt gemacht und mich da reinzulesen würde mir zu lange dauern. Ich suche daher eine lösung über Typoscript, sofern das möglich ist.
lg
Joker
Sry wegen dem Doppelpost
Weiss niemand eine Lösung?
Ich habe in der Zwischenzeit schon diverse Sachen ausprobiert.
Ich habe folgenden Code, der Beide anzeigt:
subparts.lang = HMENU
subparts.lang {
special = language
### Reihenfolge und Auswahl der Sprachen im Menü
special.value = 2,1
special.normalWhenNoLanguage = 0
1 = TMENU
1 {
noBlur = 1
NO = 1
NO {
stdWrap.override = Français || | Deutsch
doNotLinkIt = 1
stdWrap.typolink.parameter.data = page:uid
stdWrap.typolink.additionalParams = &L=2 || &L=1
stdWrap.typolink.addQueryString = 1
stdWrap.typolink.addQueryString.exclude = L,id
stdWrap.typolink.addQueryString.method = GET
stdWrap.typolink.useCacheHash = 0
stdWrap.typolink.no_cache = 0
}
### Aktive Sprache
ACT < .NO
ACT.linkWrap = |
}
}
Ich habe schon probiert mit einer IF-Abfrage auf die Varibale L zu arbeite, hat leider nicht geklappt.
Hallo Joker,
ich würde dir die Extension sr_language_menu empfehlen.
Die stell das Sprachmenü sehr gut dar, und da gibt es auch die Option "showCurrent". Wenn du diese auf 0 setzt, wird dir der Sprachselektor ohne die aktuelle Sprache angezeigt. Also genau das, was du wolltest.
Grüße Patrick
Ich habe mir die Extension runtergeladen und Konfiguriert.
Sie funktioniert auch fast so, wie ich das will. Jedoch klappt der wichtigste Teil, dass nur die Inaktive angezeigt wird, nicht.
Wenn ich auf der Deutschen Seite bin:
| Deutsch | Français
Und bei der Französischen:
| Deutsch | Français
Ich finde den Fehler einfach nicht.
plugin.tx_srlanguagemenu_pi1 {
defaultLayout = 2
showCurrent = 0
defaultLanguageISOCode = ""
languagesUidsList = 1,2
}
Und innerhalb des PAGE-Object
subparts.lang < styles.content.getRight
Das Template
<h4>Text</h4>
<!-- ###TEMPLATE_2### begin -->
<!-- ###LINK_LIST### begin
This is the part of the template substituted with the list of links:
-->
<!-- ###LINK_ENTRY### begin
Template for a single link
-->
###LINK###
<!-- ###LINK_ENTRY### end-->
<!-- ###LINK_LIST### end -->
<!-- ###TEMPLATE_2### end -->
Und die ext_typoscript_setup.txt
plugin.tx_srlanguagemenu_pi1 {
templateFile = {$plugin.tx_srlanguagemenu_pi1.file.templateFile}
useSysLanguageTitle = {$plugin.tx_srlanguagemenu_pi1.useSysLanguageTitle}
languagesUidsList = {$plugin.tx_srlanguagemenu_pi1.languagesUidsList}
hideIfNoAltLanguages = {$plugin.tx_srlanguagemenu_pi1.hideIfNoAltLanguages}
target = {$plugin.tx_srlanguagemenu_pi1.target}
defaultLayout = {$plugin.tx_srlanguagemenu_pi1.defaultLayout}
list.showInactive = {$plugin.tx_srlanguagemenu_pi1.showInactive}
link.INACT.stdWrap.if.isTrue = {$plugin.tx_srlanguagemenu_pi1.showInactive}
Ich habe nun schon so ziemlich jede Zeile zu editieren Probiert, hat allerdings nie was gebracht.
lg Joker
Hallo Joker,
TheJoker schrieb
Sie funktioniert auch fast so, wie ich das will. Jedoch klappt der wichtigste Teil, dass nur die Inaktive angezeigt wird, nicht.
Du hast alles ins Setup deines Templates geschrieben oder?
Du hast 2 Möglichkeiten:
Entweder in die Constants:
plugin.tx_srlanguagemenu_pi1.showCurrent = 0
Dann hast du im Setup:
plugin.tx_srlanguagemenu_pi1.link.CUR.stdWrap.if.isTrue = {$plugin.tx_srlanguagemenu_pi1.showCurrent}
(Du brauchst diese Zeile aber nicht, weil diese so Standard ist)
Oder gleich ins Setup:
plugin.tx_srlanguagemenu_pi1.link.CUR.stdWrap.if.isTrue = 0
Grüße Patrick
Hallo Patrick
Ich habe mir das Ganze nochmlas angeschaut.
Bei der Französischen Seite zeit es mir jetzt eigentlich Richtig an (abgesehen von "|")
| Deutsch
Bei der Deutschen Seite ist die Aktive allerdings immernoch da.
Deutsch | Français
Im Setup sieht es jetzt so aus
plugin.tx_srlanguagemenu_pi1 {
defaultLayout = 2
defaultLanguageISOCode = ""
languagesUidsList = 1,2
link.CUR.stdWrap.if.isTrue = 0
}
[...]
page.10 {
[...]
subparts.lang < styles.content.getRight
[...]
}
Und Bei den Constants:
plugin.tx_srlanguagemenu_pi1.useSysLanguageTitle = 1
plugin.tx_srlanguagemenu_pi1.useSelfLanguageTitle = 0
plugin.tx_srlanguagemenu_pi1.hideIfNoAltLanguages = 1
plugin.tx_srlanguagemenu_pi1.showCurrent = 0
plugin.tx_srlanguagemenu_pi1.doNotLinkInactive = 0
plugin.tx_srlanguagemenu_pi1.addSelectionListHeader = 0
plugin.tx_srlanguagemenu_pi1.defaultLayout = 2
plugin.tx_srlanguagemenu_pi1.defaultLanguageISOCode = De
plugin.tx_srlanguagemenu_pi1.defaultCountryISOCode = De
lg
Pascal
Hallo,
ich hab jetzt zwar nicht ganz verstanden, wie es im Moment bei dir ausschaut, aber falls etwas nicht klappt, könntest du auch noch mit einer Condition arbeiten:
[globalVar = GP:L = 1]
plugin.tx_srlanguagemenu_pi1.languagesUidsList = 2
[global]
[globalVar = GP:L = 2]
plugin.tx_srlanguagemenu_pi1.languagesUidsList = 1
[global]
Was ist eig. deine Default-Sprache? (also die 0)
Grüße Patrick
Guten Morgen Patrick
Vielen dank für deine Hilfe.
Ich hab die Extension nochmals komplett Rausgeworfen.
Nach der Neuinstallation hat es komischerweise fast funktioniert.
Sprich: Es wird nur die Inatkive Sprache angeziegt. Allerdings steht anstelle von Deutsch noch German dort.
Dies habe ich gefixt, in dem ich per PhpMyAdmin in der Tabelle static_languages den Eintrag von Deutsch(ID 43) German zu Deutsch abgeändert habe.
Nun funktioniert alles so, wie es soll.
Sollte noch jemand probleme mit der Konfiguration haben, hier meine Komplette:
Konstanten:
#Namen aus der Tabelle SysLanguage verwenden
plugin.tx_srlanguagemenu_pi1.useSysLanguageTitle = 1
#Sprachnamen aus der Tabelle static_languages verwenden
plugin.tx_srlanguagemenu_pi1.useSelfLanguageTitle = 0
#Aktuelle Sprache anzeigen: 0 = Nein, 1 = ja
plugin.tx_srlanguagemenu_pi1.showCurrent = 0
#Inaktive sprache nicht verlinken
plugin.tx_srlanguagemenu_pi1.doNotLinkInactive = 0
# Bei der Liste einen Header hinzufügen
plugin.tx_srlanguagemenu_pi1.addSelectionListHeader = 0
# Iso-Code der Standardsprache
plugin.tx_srlanguagemenu_pi1.defaultLanguageISOCode = DE
# Layout auswählen: 0 = Flaggen, 1 = Dropdown, 2= Links
plugin.tx_srlanguagemenu_pi1.defaultLayout = 2
Setup:
### Die Sprache wird per GET-Variable "L" übergeben
config.linkVars = L
### Mehrsprachigkeit wird implementiert. Die Werte werden als globale Variable gespeichert
[globalVar = GP:L = 1]
config {
### Die Sprache mit der ID 0 ist Deutsch
plugin.tx_srlanguagemenu_pi1.languagesUidsList =0
### Sprache
language =de
locale_all = de_CH
}
[global]
[globalVar = GP:L = 1]
config {
### Sprachend ID 2 ist die ID, welche die Sprache Französisch hat.
sys_language_uid =1
### Sprache wird auf Französisch festgelegt
language =fr
locale_all = fr_FR
}
[global]
Setup: Innerhalb des Page-Object:
### Dem lang-Subpart wird der Content aus der Spalte Rechts zugewiesen
subparts.lang < styles.content.getRight
Nochmals vielen Dank für deine Hilfe.
lg Pascal