Zum Inhalt springen

Real-URL-konformen Sprachwechsler realisieren

Erstellt am 18. März 2008 · 6 Antworten · letzte Antwort am 18. September 2008

Tags: RealURL, Links, Frage

tulkas ·

Hey,

Google hat mir nicht geholfen, aus den Manuals ist mir bis jetzt keine unumständliche Methode ersichtlich das zu realisieren.
Ich habe mir folgendermaßen einen Sprachwechsler realisiert (nach Roland Meyers TYPO3-Buch):

		SPRACHE = COA
		SPRACHE {
			10 = TEXT
			10 {
				field = uid
				wrap = <a href="index.php?|&L=0"><img border="0" src="fileadmin/bilder/deutsch.png" alt="" /></a> 
			}
			20 = TEXT
			20 {
				field = uid
				wrap = <a href="index.php?|&L=1"><img border="0" src="fileadmin/bilder/englisch.png" alt="" /></a>
			}

Allerdings möchte mein Chef verständlicherweise Real-URLs haben (auch im Sprachwechsler).
Gibt es dafür einen einfach, direkten Weg? Etwas in die Richtung

field = alias
wrap = <a href="/sprache/|.html">

(geht leider nicht, weil es nicht zweckmäßig wäre für alle Seiten Aliase zu definieren.)

mit field = title stimmt die Syntax nicht (Groß- und Kleinschreibung, Umlaute, etc) und der Verzeichnisbaum geht auch futsch.

jochen ·

Hi tulkas,

bei RealURL bist Du eigentlich nur mit typolink auf der sicheren Seite...

So funktioniert es bei mir:

SPRACHE = COA
SPRACHE {
	10 = IMAGE
	10 {
		file = fileadmin/bilder/deutsch.png
		stdWrap.typolink {
			parameter.data = TSFE:id
			additionalParams = &L=0
		}
	}
	20 = IMAGE
	20 {
		file = fileadmin/bilder/englisch.png
		stdWrap.typolink {
			parameter.data = TSFE:id
			additionalParams = &L=1
		}
	}
}

Wenn Du kein IMAGE sondern TEXT verlinken willst, reicht "typolink" (statt "stdWrap.typolink").

Im "preVars"-Abschnitt der RealURL-Konfiguration kannst Du Folgendes eintragen:

...
'preVars' => array(
    array(
        'GETvar' => 'L',
        'valueMap' => array(
            'en' => '1',
        ),
        'valueDefault' => '0',
        'noMatch' => 'bypass',
    ),
),
...

So wird nur bei den englischsprachigen Seiten ein "/en" an den Anfang der URL gestellt. Vorausgesetzt natürlich, dass Deutsch die ID 0 hat und der Default ist.

Grüße
Jochen

tomN ·

Hallo,

wir verwenden zur Zeit auch diese Art der Sprachumschaltung. Allerdings haben wir dabei folgendes Problem:

Wir verwenden die Extension multilingual_alias und realUrl um je nach Sprache eine entsprechend aussagekraeftige URL zu generieren.
Bsp: http://meineDomain.de/deutscher-alias.html und http://meineDomain.de/en/englischer-alias.html

(Der Alias wird deswegen verwendet, weil dies vorher mit simulatestatics realisiert wurde und wir eine Rueckwaertskompatibilitaet fuer Google sicherstellen muessen)

Das Problem mit der Sprachumschaltung ist nun, dass wir mit dem hier angefuehrten Codeteil immer einen Link mit dem "falschen" Alias (in der aktuellen Sprache) erzeugt bekommen.
Das Problem ist auch einleuchtend, wenn man sich folgendes Beispiel vor Augen fuehrt:

Wir befinden uns auf einer deutschen Seite. Der Link fuer die englische Seite wird im deutschen "Umfeld" erzeugt, wodurch auch der deutsche Alias verwendet wird. Bsp.: http://meineDomain.de/en/deutscher-alias.html
Das /en/ wird von realurl eingefuegt, weil ja der Parameter &L=1 im TypoLink angehaengt wird.
Durch das /en/ funktioniert die Umschaltung und die Folgelinks enthalten auch den englischen Alias, aber eben das erstmalige Umschalten laeuft nicht sauber.
Eigentlich wuerde mich das nicht so stoeren, aber Google listet nun oft diese "vermischten" Urls auf :-(

Hat jemand eine Idee, wie man das in den Griff bekommen kann?

Ich habe heute versucht mittels Typoscript den englischen Alias aus der Table pages_language_overlay zu lesen, jedoch wird hier nie etwas zurueckgegeben und die Debugmoeglichkeit (sqldebug im Installtool) scheint nicht zu funktionieren.

Ich wollte mithilfe des englischen Alias einfach den Link zum Umschalten selbst zusammenstellen.

Gibt es jemanden, der das Umschalten mit multilingual_alias sauber loesen konnte? Bin fuer jeden Hinweis dankbar!

Tom

tomN ·

Also ein Auslesen des alias aus dem Table pages_language_overlay mit CONTENT und RECORD im TypoScript ist nicht moeglich.

RECORD benoetigt eine UID (auf pages_language_overlay muesste aber mit der pId zugegriffen werden). Siehe: https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/ContentObjects/Records/Index.html

CONTENT: NOTE: Only tables allowed are “pages” or tables prefixed with one of these: “tt_”, “tx_”, “ttx_”, “fe_”, “user_”. Siehe: https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/ContentObjects/Content/Index.html

Hat jemand eine andere Idee, wie ich die Sprachenumschaltung sonst sauber machen koennte?

Thx, Tom

tomN ·

Ich habe nun das Problem geloest, indem ich mir eine eigene Extension dafuer geschrieben habe.

Wenn jemand das gleiche Problem hat und meine Extension haben will, kann er mir gerne eine PM mit seiner Email-Adresse schicken.

Greetings Tom

Vesiga ·

hmm, ich versuche auch diesen sprachwechsler zu realisieren. habe noch nicht viel erfahrung mit typo3.

der sprachwechsler funktionirt erst halbwegs.

was mir nicht klar ist:

der "preVars"-Abschnitt der RealURL-Konfiguration. bei mir finde ich nirgens einen solchen abschnitt.

in welcher datei befindet sich der?! localconf.php. ext.localconf.php?! ---> bei mir auf jeden fall ist da kein solcher abschnitt vorhanden.

das manual der realurl ist für ich noch etwas heavy.

was muss ich da also wie genau einfügen?!

thx