TYPOlight mit verschachtelten URLs (Update)

Seit zwei Wochen ist bei mir erfolgreich TYPOlight im Einsatz. Auch wenn es leider keine Unterordner / verschachtelte URLs unterstützt überzeugte mich das System.
Seit der Umstellung auf meine neue Domain habe ich die URLs mit einer Kennung für die Sprache versehen. Dies habe ich bei meinen Blogs mit einer gesonderten URL-Ebene umgesetzt. (/de/blog/). Auf meiner Homepage musste ich hier dann leider etwas improvisieren (/de-index.html). Um die URLs einheitlich zu gestalten habe ich mir den Code von TYPOlight etwas näher angeschaut.
Die Methode getPageIdFromUrl() in der Datei system/modules/frontend/Frontend.php ist für das Aufbereiten der URL verantwortlich. Normalerweise werden hier GET-Variablen aus dem Pfad extrahiert. Der Pfad /test/var1/2 wird wie folgt zerlegt: test ist die eigentliche Seite. Zusätzlich wird die GET-Variable var1 mit dem Wert 2 im System registriert.
An dieser Stelle habe ich nun ein paar Erweiterungen eingebaut. Ein kleiner Fünf-Minuten-Hack, welcher mir nun den Einsatz verschachtelter URLs erlaubt.
Zunächst wird geprüft ob der Pfad mit dem URL_SUFFIX (normalerweise .html) endet. In diesem Fall wird erwartet, dass der komplette String als Seiten-Alias vorhanden ist. Ist dies nicht der Fall wird davon ausgegangen, dass nach obigem Beispiel GET-Variablen extrahiert werden müssen.
Beispiel: /ebene1/ebene2/var1/test/var/abc
Es wird nun geprüft ob es eine Seite mit dem Alias /ebene1/ebene2/var1/test/var/abc im System gibt. Ist dies nicht der Fall wird die Zeichenkette um ein Segment verkleinert (/ebene1/ebene2/var1/test/var). Sobald eine Seite gefunden wurde wird die Suche beendet. Somit wurde der Seiten-Alias ermittelt. Der Rest wird als GET-Variablen behandelt, so wie es ursprünglich von TYPOlight vorgesehen ist.
Eine Einschränkung gibt es jedoch: Durch diese Änderung könnte es jedoch zu Konflikten zwischen Seiten-Alias und dynamischen GET-Variablen kommen. Der Alias test mit GET-Variable var1 und Wert a würde wie folgt in der URL geschrieben werden: /test/var1/a. Gibt es nun aber eine Seite mit genau diesem Alias wird in diesem Fall der Alias test nicht angesprochen werden, da zuvor für die komplette Zeichenkette eine Seite gefunden wird.
Update 27.08.2007: Download der Datei Frontend.php. Es muss nur noch die Endung in .php geändert werden.
Update 11.01.2008: Frontend.php für Version 2.5.2
Update 29.06.2008: Lösung verfügbar. Downloads sind entfernt.


August 27th, 2007
Hi Sebastian,
Sorry, i can’t read german and even with google translate it’s hard to understand what you wrote. I’m also very interested to have nice urls with subcategories in it but have no php skills. Please could you send me the file you hacked.
Thanks in advance
Marisa
August 27th, 2007
Now there is a download link for the file Frontend.php.