[Frage] default ohne /de/ in URL und nicht übersetzte Seite auf /de/... verlinken TYPO3-Version: 4.4.2

  • lukengda lukengda
    T3PO
    0 x
    8 Beiträge
    0 Hilfreiche Beiträge
    01. 10. 2014, 17:59

    Hallo, ich habe ein altes Typo übernommen, erst mal müssen 2-3 Probleme gelöst werden:

    Ich habe Mehrsprachigkeit hinzugefügt und möchte, dass wenn die Default-Sprache aufgerufen wird, also deutsch, dann auch kein /de/ in der URL steht. Dafür ist RealURL zuständig oder? Sorry, bin relativ neu in Typo und TS.

    Dies ist mein Sprachenwechsler:

    1. temp.LELANGUAGESELECT = HMENU
    2. temp.LELANGUAGESELECT{
    3. special = language
    4. # Here we need to insert language ids in use
    5. special.value = 0,1
    6. # Set the default
    7. special.normalWhenNoLanguage = 0
    8. wrap = <ul> | </ul>
    9. 1 = TMENU
    10. 1 {
    11. wrap = <div><h1>Language</h1></div><ul>|</ul>
    12. NO = 1
    13. NO {
    14. linkWrap = <li class="first"> | </li> |*| <li> | </li> |*| <li class="last"> | </li>
    15. stdWrap.override = DE || EN
    16. ATagTitle = Deutsch || English
    17. doNotLinkIt = 1
    18. stdWrap.typolink.parameter.data = page:uid
    19. stdWrap.typolink.additionalParams = &L=0 || &L=1
    20. stdWrap.typolink.addQueryString = 1
    21. stdWrap.typolink.addQueryString.exclude = id,cHash,no_cache
    22. stdWrap.typolink.addQueryString.method = GET
    23. stdWrap.typolink.useCacheHash = 0
    24. stdWrap.typolink.no_cache = 0
    25. }
    26. ACT = 1
    27. ACT < .NO
    28. ACT.ATagParams = class = "active"
    29. ACT.doNotLinkIt = 1
    30. ACT.linkWrap = <li class="first active"> | </li> |*|<li class="active"> | </li> |*| <li class="last active"> | </li>
    31. }
    32. }

    [b]Kann man das umsetzen?[/b]

    [b]Wie kann ich nur die Sprachen anzeigen, die aktuell nicht ausgewählt sind?[/b] Also im Normalfall soll da nur "EN" stehen und auf /en/ weiterleiten, und ansonsten "DE" stehen und auf / weiterleiten. Es könnten auch noch mehr Sprachen hinzu kommen.

    [b]Dann noch ein i-Tüpfelchen[/b]: Wenn eine Seite nicht übersetzt ist, dann sollten die Links auch nicht mit /en/ generiert werden auch wenn der Leser sich gerade auch auf einer englischen Seite befindet oder? Für die SEO wäre es doch schöner, wenn es die Seite unübersetzt nicht zwei mal gibt unter / und /en/? Vielleicht denk ich auch falsch und man macht das nicht so. Hinweise erwünscht!
    Vielen Dank


  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    02. 10. 2014, 06:28

    Das Verhalten von realurl wird in der Datei ./typo3conf/realurlconf.php (eventuell liegt da auch eine autoconf-Datei) konfiguriert,
    es wäre also sinnvoll, deren Inhalt zu posten, um brauchbare Hilfe zu bekommen.

    Zum i-Tüpfelchen ist die Typoscript-Anweisung
    config.sys_language_mode = strict
    hilfreich
    http://www.typo3.net/tsref/setup/config/#sys_language_mode

  • lukengda lukengda
    T3PO
    0 x
    8 Beiträge
    0 Hilfreiche Beiträge
    02. 10. 2014, 12:48

    Hallo, Danke schon mal. Die conf werde ich gleich posten, erst mal möchte ich sie grob formatieren, damit sie nicht so unübersichtlich ist.

    Wegen dem strikten Modus komme ich noch nicht ganz zurecht. Wenn die Seite nicht übersetzt ist, dann bekomme ich jetzt die Meldung "Reason: Page is not available in the requested language (strict)." ich möchte ja aber, dass die Links gleich ohne /en/... generiert werden oder ein redirect auf die /... Seite gemacht wird

    edit, habe die Datei jetzt angehängt, oder soll ich den Quelltext lieber direkt posten?

    Anhänge (1)
    dump_urltoolconf_realurl.php.txt text/x-php 0,00 B 229 heruntergeladen
  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    02. 10. 2014, 13:52

    statt:

    1. ...
    2. 'GETvar' => 'L',
    3. 'valueMap' => array (
    4. 'de' => '0',
    5. 'en' => '1',
    6. ),
    7. 'noMatch' => 'bypass',
    8. ...

    so:
    1. ...
    2. 'GETvar' => 'L',
    3. 'valueMap' => array (
    4. 'en' => '1',
    5. ),
    6. 'noMatch' => 'bypass',
    7. ...

    anschließend Realurl-Caches löschen.

  • lukengda lukengda
    T3PO
    0 x
    8 Beiträge
    0 Hilfreiche Beiträge
    07. 10. 2014, 17:04

    ich habe deine Tipps befolgt, in meinem Sprachenmenü bekomme ich folgende Verlinkungen:

    aktuelle Seite: domain.com/LinkZurSeite
    DE: domain.com/LinkZurSeite
    EN: domain.com/en/LinkZurSeite

    aktuelle Seite: domain.com/en/LinkZurSeite
    DE: domain.com/en/LinkZurSeite
    EN: domain.com/en/LinkZurSeite

    Was kann ich tun um dies zu korrigieren?

    Und was hat mir der Strikte Sprachenmodus jetzt gebracht? Jetzt bekomme ich eine Fehlermeldung, wenn ich von den übersetzten englischen Seiten auf eine nichtübersetzte Sprache komme. Wie kann ich statt der Fehlermeldung auf die normale Seite ohne /en/ umleiten?

  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    08. 10. 2014, 06:51

    Keine Ahnung, warum das bei dir nicht funktioniert wie es soll,
    ich fahre mit ähnlichen Konstrukten seit Jahren auf diversen Seiten problemfrei.

    Realurl-Caches wirklich gelöscht?

    Im Zweifelsfall - realurl deaktivieren und korrekte Funktionsweise des Menüs testen,
    da hat man schon mal eine Fehlerquelle ausgeschaltet.

  • lukengda lukengda
    T3PO
    0 x
    8 Beiträge
    0 Hilfreiche Beiträge
    14. 10. 2014, 00:04

    hallo, hatte heute nacht mal die chance, realurl zu daaktivieren, realurl scheint zu funktionieren! das zu viele "/en/" hat auch ein "L=1" Könntest du mir Ideen geben, wo ich suchen muss? kann dir auch Inhalte von verschiedenen Dateien posten.

    Danke schon mal, dass du dich so bemühst, mir zu helfen!

    Gruß, Lukas

  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    14. 10. 2014, 07:45

    Dateien posten bringt nichts.
    Schau in den Typoscript-Object browser,
    offensichtlich weicht dein Typoscript von dem oben geposteten ab und du setzt irgendwo immer L=1,
    unabhängig von der Sprache.

  • lukengda lukengda
    T3PO
    0 x
    8 Beiträge
    0 Hilfreiche Beiträge
    14. 10. 2014, 12:50

    ich vermute ja, dass es damit zu tun hat, dass ich die Zeile

    1. 'de' => '0',

    rausgenommen habe, denn davor hat es ja funktioniert.

    Oder muss ich vielleicht aus dem Code von ganz oben noch mehr Zeilen entfernen? Zb wo ich die Values 0 und 1 definiere?

    Und das L=1 wird ja auch nicht jedes mal gesetzt, sondern nur wenn ich schon in der Sprache 1 bin, bin ich in Sprache 0, so funktioniert das Skript genau so wie erwartet. Ich kann im Objekt-Browser jetzt nichts verdächtiges finden.

  • Chrissli Chrissli
    Jedi-General
    0 x
    1016 Beiträge
    28 Hilfreiche Beiträge
    14. 10. 2014, 16:01

    Zb wo ich die Values 0 und 1 definiere?

    Die Values 0 und 1 entsprechen der jeweiligen ID in der Typo3 Datenbank, sprich mit jeder neuen Sprache läuft der Zähler um eins weiter.
    1. ...
    2. 'GETvar' => 'L',
    3. 'valueMap' => array (
    4. 'de' => '0',
    5. 'en' => '1',
    6. ),
    7. 'noMatch' => 'bypass',
    8. ...

    Hier sagts du die Sprache mit der ID 0 ( erkennbar an der GET-Variable 'L' ) gehört zum Kenner "de".
    Du mappst also die möglichen URL-Fragmente auf einen Wert.

    Was jenses dir sagen wollte ist, dass du irgendwo in deinem TS die Sprache definierst, was dazu führt das die ID ab diesem Zeitpunkt mit angehängt wird und alle Links in englische führen.
    Das muss aber irgendwo in deinem TS sein.

    Kann es evtl. sein, dass du die sys_language_uid setzt und die Conditions vergessen hast oder was in der Art?

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