[Frage] Marker im Typoscript werden nicht ersetzt? TYPO3-Version: 4.7.12

  • flanger flanger
    Padawan
    0 x
    52 Beiträge
    1 Hilfreiche Beiträge
    18. 11. 2013, 11:37

    Hi!
    Ich stehe hier mächtig auf dem Schlauch und könnte etwas Hilfe gut gebrauchen. Wahrscheinlich bin ich einfach zu doof...
    Es geht darum, dass ich einen Sprachumschalter auf meiner Seite per Marker einbinde. Je nach Sprache ist eine andere Fahne oben zu sehen und der Umschalter entsprechend vertauscht...
    Von daher gibt es in meinem HTML Template den Aufruf zum Marker:

    1. ###LANGUAGESWITCHER###

    Im Typoscript möchte ich nun diesen Marker dynamisch verändern. Es soll jeweils zur aktuellen Seite + Language Flag weitergeleitet werden. Dazu habe ich folgendes Typoscript entworfen:

    1. marks {
    2. SEITENURL = TEXT
    3. SEITENURL.typolink {
    4. parameter.data = TSFE:id
    5. returnLast=url
    6. }
    7. LANGUAGESWITCHER = TEXT
    8. LANGUAGESWITCHER.value = <form name="form"><select style="width:60px" name="link" onChange="javascript:window.location.href = document.form.link.options[document.form.link.selectedIndex].value;"><option value="'###SEITENURL###'?L=0" data-image="fileadmin/templates/img/german.gif"><span style="float:right"></span> </option><option value="'###SEITENURL###'?L=1" data-image="fileadmin/templates/img/gb.gif"><img src=""> </option></select></form>
    9. LANGUAGESWITCHER.lang.en = <form name="form"><select style="width:60px" name="link" onChange="javascript:window.location.href = document.form.link.options[document.form.link.selectedIndex].value;"><option value="###SEITENURL###?L=1" data-image="fileadmin/templates/img/gb.gif"><img src=""> </option><option value="###SEITENURL###?L=0" data-image="fileadmin/templates/img/german.gif"><span style="float:right"></span> </option></select></form>
    10. }

    Das Problem ist nun, dass die Marker im Typoscript nicht ersetzt werden. Ist das ein Grundlegendes Problem oder kann man das irgendwie lösen? Wäre super wenn mir jemand auf die Sprünge helfen könnte! Danke!!!

  • Hilfreichster Beitrag

  • Tevsa Tevsa
    Sternenflotten-Admiral
    1 x
    171 Beiträge
    5 Hilfreiche Beiträge
    18. 11. 2013, 15:04 - Hilfreichster Beitrag

    Das ist ein gute Frage.... Ist das einen Extension, die diesen Wert benutzen soll?
    Ich kapiere nicht ganz was du damit vorhast...
    Versuch mal soetwas:

    1. LANGUAGESWITCHER = COA
    2. LANGUAGESWITCHER.10 = TEXT
    3. LANGUAGESWITCHER.10.value(
    4. <form name="form"><select style="width:60px" name="link" onChange="javascript:window.location.href = document.form.link.options[document.form.link.selectedIndex].value;"><option value="
    5. )
    6. LANGUAGESWITCHER.20 = TEXT
    7. LANGUAGESWITCHER.20.typolink {
    8. parameter.data = TSFE:id
    9. returnLast=url
    10. }
    11. LANGUAGESWITCHER.30 = TEXT
    12. LANGUAGESWITCHER.30.value(
    13. ?L=0" data-image="fileadmin/templates/img/german.gif"><span style="float:right"></span> </option><option value="
    14. )
    15.  
    16. LANGUAGESWITCHER.40 = TEXT
    17. LANGUAGESWITCHER.40.typolink {
    18. parameter.data = TSFE:id
    19. returnLast=url
    20. }
    21. ....

    Die Idee dahinter: Du brauchst einen HTML-String. die einzige Variable ist "SEITENURL" Die kannst du mein eine COA - Object zusammensetzen. Ich habe leider grade wenig Zeit den Code vollständig zu setzen, aber ich glaube mit dem Beispiel Oben kann man erkenne was ich meine.
    Konstanten brauchst du da nicht.
    Die Seiten URL kannst duch als temp.Object mehrfachnutzen. ABer das ist dann Optimierung und nicht mehr erstellung.

    Mein Prof sagte damals immer 1.) Make it run 2) make ist beautiful...

    Ich hoffe es hoilft

    Gruß
    Tevsa

    Irgend etwas is' ja immer...


  • Chrissli Chrissli
    Jedi-General
    0 x
    1015 Beiträge
    28 Hilfreiche Beiträge
    18. 11. 2013, 13:30

    Jo. Setzt doch mal statt,

    1. LANGUAGESWITCHER.value = ....text

    1. LANGUAGESWITCHER.value (
    2. ... text
    3. )

    Oder bau den Quelltext gleich mit TS auf

    God's in his heaven, all's right with the world

  • flanger flanger
    Padawan
    0 x
    52 Beiträge
    1 Hilfreiche Beiträge
    18. 11. 2013, 13:53

    Hi chrissli!
    Danke schonmal für die Hilfe! Leider funktioniert das nicht so ohne weiteres. Wenn ich das = durch eine Klammer ersetze wird der Marker auch nicht übersetzt.
    Es liegt doch daran, dass "value =" eine Constante erzeugt, die wiederum keine Marker interpretieren kann oder?

  • Tevsa Tevsa
    Sternenflotten-Admiral
    0 x
    171 Beiträge
    5 Hilfreiche Beiträge
    18. 11. 2013, 13:56

    Moin,

    werden denn andere Marker ersetzt? SO etwas passiert bei mir nur wenn ich

    workOnSubpart = DOKUMENT

    Oder ähnlich vergessen habe

    Gruß
    Tevsa

    Irgend etwas is' ja immer...

  • flanger flanger
    Padawan
    0 x
    52 Beiträge
    1 Hilfreiche Beiträge
    18. 11. 2013, 13:59

    Hi Tevsa!
    Also die Marker werden grundsätzlich ersetzt. Auch der Marker "SEITENURL" funktioniert. Nur eben nicht in meiner Konstante die ich für die Sprachumschaltung verwende.

  • Tevsa Tevsa
    Sternenflotten-Admiral
    0 x
    171 Beiträge
    5 Hilfreiche Beiträge
    18. 11. 2013, 14:26

    ok, jetzt habe ich die Problematik kapiert. Aber ich sehe auch keine Konstatenvariablen im deinem Quellcode.

    Wenn es mehrzeilig wird muss chrislli schon erwähnt verden da = hinter value duch "(" ersetzt werden. ganz wichtig ist das nach der klammer nix mehr kommt. Der Wert MUSS in die nächste Zeile.

    Und bei KOnstanten ist nach meinem Wissen die Notation "{WERT}" gesetzt werden , wobei WERT der Name aus den Konstants die in gescheiften Klammern stehen.
    HIer mal ein Link dazu.
    http://www.jochenfroehlich.com/typo3-best-practice/typoscript-konstanten.html

    Gruß
    Tevsa

    Irgend etwas is' ja immer...

  • flanger flanger
    Padawan
    0 x
    52 Beiträge
    1 Hilfreiche Beiträge
    18. 11. 2013, 14:34

    Der Wert MUSS in die nächste Zeile.
    ist ja ein interessanter Hinweis! Nun wird der Quellcode immerhin nicht mehr zerschossen dargestellt. Also wenn ich
    1. value (
    2. hier mein Code
    3. )

    schreibe.
    Allerdings wird mein Marker immer noch nicht ersetzt.
    Die Konstante ist ja das was hinter value kommt oder? Darin müsste halt mein Marker ausgelesen werden und das passiert leider nicht. Oder kann ich die aktuelle URL der Seite irgendwie in eine Konstante übergeben? Soweit ich das jetzt sehe ist das nicht ohne weiteres möglich?

  • Tevsa Tevsa
    Sternenflotten-Admiral
    1 x
    171 Beiträge
    5 Hilfreiche Beiträge
    18. 11. 2013, 15:04

    Das ist ein gute Frage.... Ist das einen Extension, die diesen Wert benutzen soll?
    Ich kapiere nicht ganz was du damit vorhast...
    Versuch mal soetwas:

    1. LANGUAGESWITCHER = COA
    2. LANGUAGESWITCHER.10 = TEXT
    3. LANGUAGESWITCHER.10.value(
    4. <form name="form"><select style="width:60px" name="link" onChange="javascript:window.location.href = document.form.link.options[document.form.link.selectedIndex].value;"><option value="
    5. )
    6. LANGUAGESWITCHER.20 = TEXT
    7. LANGUAGESWITCHER.20.typolink {
    8. parameter.data = TSFE:id
    9. returnLast=url
    10. }
    11. LANGUAGESWITCHER.30 = TEXT
    12. LANGUAGESWITCHER.30.value(
    13. ?L=0" data-image="fileadmin/templates/img/german.gif"><span style="float:right"></span> </option><option value="
    14. )
    15.  
    16. LANGUAGESWITCHER.40 = TEXT
    17. LANGUAGESWITCHER.40.typolink {
    18. parameter.data = TSFE:id
    19. returnLast=url
    20. }
    21. ....

    Die Idee dahinter: Du brauchst einen HTML-String. die einzige Variable ist "SEITENURL" Die kannst du mein eine COA - Object zusammensetzen. Ich habe leider grade wenig Zeit den Code vollständig zu setzen, aber ich glaube mit dem Beispiel Oben kann man erkenne was ich meine.
    Konstanten brauchst du da nicht.
    Die Seiten URL kannst duch als temp.Object mehrfachnutzen. ABer das ist dann Optimierung und nicht mehr erstellung.

    Mein Prof sagte damals immer 1.) Make it run 2) make ist beautiful...

    Ich hoffe es hoilft

    Gruß
    Tevsa

    Irgend etwas is' ja immer...

  • flanger flanger
    Padawan
    0 x
    52 Beiträge
    1 Hilfreiche Beiträge
    19. 11. 2013, 10:37

    Hi Tevsa!
    [b]Also erstmal 1000 Dank![/b] Das ist auf jeden Fall ein Schritt in die richtige Richtung! Ich beschreibe nochmal genau was ich vorhabe:

    Es gibt einen Sprachumschalter in Form eines Dropdownmenüs mit Flaggen. Wenn ich auf der deutschen Seite bin gibt es oben ein Fähnchen für Deutsch. Wenn ich das Dropdownmenü öffne sehe ich meine alternativsprachen zB Englisch. Klicke ich auf Englisch komme ich zur englischen Version der aktuellen Seite UND oben im Dropdown steht ab sofort die Englische Fahne oben. Wenn ich das Dropdown nun öffne sehe ich als erste Auswahl die Deutsche Fahne. Das klappte soweit super mit simplen Konstanten. Da ich aber nun zur aktuellen Seite verlinken möchte muss ich ja die URL Variabel halten. Da liegt der Hase im Pfeffer :).

    Dein Code funktioniert soweit gut! Nun muss ich nur noch eine Englische Version dieses Codes anlegen, die dann ausgewählt wird, wenn man auf der englischen Seite ist. Es soll so sein, dass wenn man auf der englischen Seite ist, das Dropdown Menü genau anders herum dargestellt wird. Also zuerst die Englische Fahne und dann eben die Deutsche.

    Mit

    1. LANGUAGESWITCHER.150 = TEXT
    2. LANGUAGESWITCHER.150.value(
    3. ?L=1" data-image="fileadmin/templates/img/gb.gif"><img src=""> </option></select></form>
    4. )
    5. LANGUAGESWITCHER.150.lang.en(
    6. ?L=0" data-image="fileadmin/templates/img/german.gif"><img src=""> </option></select></form>
    7. )

    klappt das noch nicht...

  • Tevsa Tevsa
    Sternenflotten-Admiral
    1 x
    171 Beiträge
    5 Hilfreiche Beiträge
    19. 11. 2013, 11:05

    Das freunt mich :-)

    Grde wenig Zeit. Stickwort sind conditons

    also sowas:

    1. [globalVar = GP:L = 0]
    2. ... hier das TS für die default Sprache
    3. [global]
    4.  
    5. [globalVar = GP:L = 1]
    6. ... hier das TS für die 2. Sprache
    7. [global]

    Gruß
    tevsa

    Irgend etwas is' ja immer...