path-basiertes URL-Rewrite für Redaxo 5
Version 2.2
Autor: Wolfgang Busch
- Dieses AddOn ist eine Erweiterung des Standard-Rewriters und
nutzt den
Extension Point URL_REWRITE .
- Der Artikel-URL wird automatisch in der Form
category1/category2/.../categoryN/article
generiert und bildet so den Kategorien-Pfad eines Artikels ab.
Für die zugehörigen Kategorie- und Artikelbezeichnungen werden
Meta Infos eingerichtet und als zusätzliche Artikelparameter
genutzt.
- Die Sprache einer Seite kann wahlweise im URL oder durch eine
Session-Variable gekennzeichnet werden.
- Artikel können auch über den Redaxo-Standard-URL
index.php?article_id=ID&clang=CID aufgerufen
werden.
- Es sind keine besonderen RewriteRules erforderlich.
Setzen eines Wunsch-URLs
Ein URL hat in Redaxo die Standardform
index.php?article_id=ID&clang=CID mit Verweis auf
die Artikel-Id und die Sprach-Id. In der Regel soll stattdessen
jeder Artikel einen "Wunsch-URL" erhalten, der Hinweise
gibt auf Artikelinhalt, Themenkategorie, Site-Struktur o. Ä.
Zur Realisierung wird eine Funktion definiert, die den gewünschten
URL am Extension Point URL_REWRITE zurück gibt. Im
Backend wird diese Funktion nur im Content-Kontext eines Artikels
(edit, functions) aufgerufen, im Frontend nur innerhalb
der Funktion rex_getUrl($article_id,$clang_id) .
Letztere liefert dem Redakteur (z. B. in Templates oder Modulen)
den URL eines Artikels und die Anzeige im Browser-Adressfeld.
Rewrite-Mechanismus
Ein Link auf einen Artikel wird durch eine
Umleitungsregel
RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [L]
(Datei .htaccess)
an das Redaxo CMS übergeben. Links auf Dateien oder Verzeichnisse
erfolgen ohne Umleitung. Die Umleitung führt zunächst auf den
Site-Startartikel. Damit stattdessen der gewünschte Artikel
angezeigt wird, muss die aktuelle Artikel-Id
rex_article::getCurrentId() mit der Id des Artikels
überschrieben werden. Bei mehrsprachigen Installationen muss
auch die aktuelle Sprach-Id rex_clang::getCurrentId()
durch die Sprach-Id des Artikels ersetzt werden. Artikel-Id
und Sprach-Id sind aus dem URL des anzuzeigenden Artikels, d. h.
aus der Variablen $_SERVER['REQUEST_URI'] , zu
ermitteln.
Elemente der URL-Darstellung:
Für die Darstellung eines URLs werden bei der Installation
des AddOns die folgenden Meta Infos angelegt, als Zeilen in der Tabelle
rex_metainfo_field und als Spalten in der Tabelle
rex_article . Sie werden bei der De-Installation nicht wieder
entfernt.
cat_dirname : "Verzeichnisname" für jede
Kategorie, Default: Kategoriename (catname )
art_basename : "Dateiname" für jeden
Artikel, Default: Artikelname mit Namenserweiterung
(name.html ), für Kategorie-Startartikel wird der
Artikelname durch "index" ersetzt ("Dateiname":
index.html )
art_custom_url : aus den obigen Daten
generierter Artikel-URL (Custom URL, ohne führenden "/"),
ablesbar (readonly) in den Metadaten des Artikels,
den Wert (mit führendem "/") liefert die Standardfunktion
rex_getUrl(article_id) , er ist für alle Sprachversionen
gleich
Erlaubte Zeichen für die Meta Infos sind: Buchstaben, Ziffern, Punkt(.), Minuszeichen(-), Unterstrich(_), nicht erlaubt sind u.a. Umlaute oder Leerzeichen.
Startartikelname und Namenserweiterung können auch anders konfiguriert
werden.
Kennzeichnung der Sprache:
Die Kennzeichnung der Sprache erfolgt mittels der definierten
Sprachcodes, wahlweise durch
- eine Erweiterung des angezeigten URLs um den voran gestellten Sprachcode
(
/en/cat_dirname1/... ) oder
- eine Erweiterung des angezeigten URLs um einen language-Parameter
(
.../art_basename?language=en ) oder
- eine Session-Variable
$_SESSION['language']='en' ,
ein Sprachwechsel erfolgt hier mittels language-Parameter im
Link (vergl. vorige Zeile).
Die Art der Kennzeichnung ist konfigurierbar. Bei der Standardsprache
und damit auch bei einsprachigen Installationen entfällt
sie ganz.
AddOn-Download
|