Zum Inhalt springen

RealUrl: Sprachabhängige Konfiguration

Erstellt am 23. Februar 2009 · 3 Antworten · letzte Antwort am 27. Februar 2009

Tags: RealURL, URLs & Routing, Frage

Freshmeat ·

Hallo Forum

Ich machte mich heute mal daran die Konfiguration von RealUrl genauer unter die Lupe zu nehmen. Dabei wollte ich vorallem erreichen das man verschiedene Konfigurationen für die einzelnen Sprachen hinterlegen kann.

Zum Beispiel das es bei tt_news nicht überall heisst "article/newstitel.html" sondern eben sprachabhängig "artikel/newstitel.html" oder "article/newstitle_englisch.html".

Ich glaube auch einen ganz netten Ansatz zur Lösung gefunden zu haben. Aber dieser scheitert leider an einem trivialen Problem.

Und zwar wollte ich verschiedene Konfigurationsparameter zu Beginn der realurl.conf definieren. (abhängig von der Sprache)

switch($_GET['L']) {
	case "1":
		$sql_field = 'l18n_parent';
		$txt_categorie = 'kategorie_fr';
		$txt_product = 'produit';
		break;
	case "2":		
		$sql_field = 'l18n_parent';
		$txt_categorie = 'kategorie_it';
		$txt_product = 'prodotto';
		break;
	default:		
		$sql_field = 'uid';
		$txt_categorie = 'kategorie';
		$txt_product = 'produkt';
		break;
}

Wie ihr seht frage ich mittels $_GET['L'] den Sprachparameter ab. Das ist in dieser Form natürlich absolut unbrauchbar, da:
1) keine Überprüfung auf fehlerhafte Eingaben. (Manipulation)
2) dieser GET-Parameter gar nicht verfügbar ist, wenn die Seite über http://www.domain.tld/sprache/seite.html aufgerufen wird.

Lange rede, kurzer Sinn: Wie greife ich am besten auf die Sprachvariable zu (bei eingeschaltetem RealUrl) ?

Am besten wäre natürlich wenn ich die Variable $GLOBALS['TSFE']->sys_language_uid nutzen könnte. Die wäre ja schon vom Core richtig geprüft und geliefert. Aber muss ich die einbinden?

einpraegsam.​net ·

Diese eigenwillige Konstruktion habe ich zwar so noch nie gesehen, aber warum eigentlich nicht?

1) Was soll den manipuliert werden? So wie du $_GET nutzt, kann meiner Meinung nach keine Manipulation passieren (Im Notfall eben mit intval sicher stellen, dass es sich hierbei um Integer handelt

2) Das funktioniert so schon, du hast nur vergessen den Fall mit aufzunehmen, wenn L überhaupt nicht gesetzt wurde

Freshmeat ·
einpraegsam.net schrieb

Diese eigenwillige Konstruktion habe ich zwar so noch nie gesehen, aber warum eigentlich nicht?

Gibt es einen anderen, besseren Weg?

einpraegsam.net schrieb

1) Was soll den manipuliert werden? So wie du $_GET nutzt, kann meiner Meinung nach keine Manipulation passieren (Im Notfall eben mit intval sicher stellen, dass es sich hierbei um Integer handelt

Versteh ich grad nicht. Manipuliert werden soll die Generation der Links. Und die Abfrage des $_GET-Parameters sollte so schon richtig sein.

einpraegsam.net schrieb

2) Das funktioniert so schon, du hast nur vergessen den Fall mit aufzunehmen, wenn L überhaupt nicht gesetzt wurde

default: sollte das abfangen.