[Frage] Sprachmenü Link URL ohne Standardsprachkürzel TYPO3-Version: 6.1.1

  • sxbxstxxn sxbxstxxn
    R2-D2
    0 x
    80 Beiträge
    0 Hilfreiche Beiträge
    11. 09. 2014, 11:15

    Hallo,

    folgende Ausgangssituation: Ich habe eine rein deutsche Seite. Die Links werden ohne sprachkürzel erstellt. (Bsp: http://www.meineseite.de/kontakt/). Nun baue ich eine zusätzliche Sprache ein. Es funktioniert problemlos, dass sich übersetzte Seiten über http://www.meineseite.de/fr/contact aufrufen lassen und die deutschen Seiten wie bisher!

    Nun habe ich aber ein Sprachmenü eingebaut, welches immer direkt von der deutschen auf die frz Seite leitet und umgekehrt. Bei letzterem habe ich jetzt aber immer ein "de" im Link. Also http://www.meineseite.de/de/kontakt. Im "normalen" Seitenmenü ist dagegen alles wieder korrekt ohne de. Gibt es hier eine Einstlelung die ich übersehen habe?

    Hier mein Typoscript für das Language Menu

    1. lib.languageMenu = HMENU
    2. lib.languageMenu {
    3. # Ein Sprach-Menü wird erzeugt
    4. special = language
    5. # Reihenfolge und Auswahl der Sprachen im Menü
    6. special.value = 0,1
    7. special.normalWhenNoLanguage = 0
    8. wrap = <ul id="language_switch">|</ul>
    9. 1 = TMENU
    10. 1 {
    11. noBlur = 1
    12. # Standard Sprachen
    13. NO = 1
    14. NO {
    15. linkWrap = <li>|</li>
    16. # Standard-Titel für den Link wäre Seitenttitel
    17. # => anderer Text als Link-Text (Optionsschift)
    18. stdWrap.override = <span class="lang-icon icon-de"></span><span class="lang-text text-de">DEU</span> || <span class="lang-icon icon-fr"></span><span class="lang-text text-fr">FR</span>
    19. # Standardmäßige Verlinkung des Menüs ausschalten
    20. # Da diese sonstige GET-Parameter nicht enthält
    21. doNotLinkIt = 1
    22. # Nun wird der Link mit den aktuellen GET-Parametern neu aufgebaut
    23. stdWrap.typolink.parameter.data = page:uid
    24. stdWrap.typolink.additionalParams = &L=0 || &L=1
    25. stdWrap.typolink.addQueryString = 1
    26. stdWrap.typolink.addQueryString.exclude = L,id,cHash,no_cache
    27. stdWrap.typolink.addQueryString.method = GET
    28. stdWrap.typolink.useCacheHash = 1
    29. stdWrap.typolink.no_cache = 0
    30. }
    31. # Aktive Sprache
    32. ACT < .NO
    33. ACT.linkWrap = <li>|</li>
    34.  
    35. # NO + Übersetzung nicht vorhanden
    36. USERDEF1.linkWrap = <li>|</li>
    37.  
    38. # ACT + Übersetzung nicht vorhanden
    39. USERDEF2.linkWrap = <li>|</li>
    40.  
    41. }
    42. }


  • 1
  • Chrissli Chrissli
    Jedi-General
    0 x
    1016 Beiträge
    28 Hilfreiche Beiträge
    11. 09. 2014, 11:41

    Wenn der Sprachparameter gesetzt ist, wird auch das Language-Teil eingebunden.
    Theoretisch sollte es reichen wenn du das ersetzt:

    1. stdWrap.typolink.additionalParams = &L=0 || &L=1

    mit
    1. stdWrap.typolink.additionalParams = &L=1
    2. stdWrap.typolink.additionalParams.if.isTrue.data = GP:L

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

  • sxbxstxxn sxbxstxxn
    R2-D2
    0 x
    80 Beiträge
    0 Hilfreiche Beiträge
    11. 09. 2014, 12:06

    Danke für die Antwort!

    Leider führt das jetzt dazu, dass das Menü gar nicht mehr richtig arbeitet. (immer nur link auf startseite de). Ich denke ich brauche ja auch die Language Identifizierung über den Parameter, ich will ja lediglich in der URL das DE kürzel nicht. Beim normalen Seitenaufruf oder Menülinks, ist dieses ja auch nicht vorhanden...

  • sxbxstxxn sxbxstxxn
    R2-D2
    0 x
    80 Beiträge
    0 Hilfreiche Beiträge
    11. 09. 2014, 14:23

    Ist es vielleicht eine real_url Einstellung?

  • Chrissli Chrissli
    Jedi-General
    0 x
    1016 Beiträge
    28 Hilfreiche Beiträge
    11. 09. 2014, 14:42

    Stimmt, kann ja gar nciht, das ist mein Fehler.

    Zum Problem:
    Deine RealURL-Config steht vermutlich auf bypass, d.h. wenn "de" oder "en" ist nur dann in der URL enthalten wenn der GET-Wert "L" gesetzt ist. Wenn du ihn über dein Menü via additionalParams aber hinzufügt ist der Wert in jedem Falle enthalten, daher werden die URLs mit "de" generiert.

    Wieviele Parameter hast du denn, dass du einen so Umständlichen Sprachumschalter generieren musst?
    Ich habe da schon deutlich einfachere gesehen, z.b. diesen hier von etux was das glaube ich:

    1. lib.sprachmenue = HMENU
    2. lib.sprachmenue {
    3. special = language
    4. special.value = 0,1,2,3
    5. wrap = <ul class="languages-list">|</ul>
    6. 1 = TMENU
    7. 1 {
    8. NO = 1
    9. NO {
    10. allWrap = <li>|</li>
    11. value = français || italiano || deutsch || english
    12. }
    13. }
    14. ACT < .NO
    15. ACT {
    16. allWrap = <li class="current-language">|</li>
    17. }
    18. }
    19. }

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

  • sxbxstxxn sxbxstxxn
    R2-D2
    0 x
    80 Beiträge
    0 Hilfreiche Beiträge
    12. 09. 2014, 14:59

    Das bypass stand tatsächlich drin. Komisch allerdings, dass ihn das außerhalb des Sprachmenüs nicht gestört hat. Auch das Entfernen des noMatch => bypass war ohne erfolg...

    was dann letztendlich zum Erfolg führte war folgendes (auch wenn es vielleicht nicht optimal ist):

    1. 'preVars' =>
    2. 0 =>
    3. 'GETvar' => 'L',
    4. 'valueMap' =>
    5. '' => '0',
    6. 'fr' => '1',
    7. ),
    8. 'valueDefault' => '',
    9. 'noMatch' => 'bypass',
    10. ),
    11. ),

    Vielen Dank für die Hilfe!

  • 1