Mit Version 3.8 wurde bei Joomla! ein neues Routing-System ("Modern Router") eingeführt. Diese Dokumentation erklärt die korrekte Nutzung dieses modernen Routers mit Fokus auf Menüeinträge, Kategorien und Items (z. B. Bilder in JoomGallery oder Artikel) sowie deren Aliase.
Ăśberblick: Was macht der moderne Router?
Der moderne Router wurde konzipiert, um klarere und konsistentere SEF-URLs zu generieren. Es wurde eine Schnittstelle geschaffen, um ĂĽber verschiedene Komponenten hinweg gleiche URLs zu erzeugen. Dies tut er, indem er:
- Menüeinträge als Basis für URL-Segmente verwendet,
- Kategorien-Hierarchien zur Segmentbildung nutzt,
- IDs optional entfernen kann,
- und nicht auflösbare Parameter als Query-Parameter anhängt.
Das Ziel: Nette URLs wie /gallery/images/mein-bild.html statt komplexer Query-Strings.
Voraussetzungen und Router-Einstellungen
Aktivierung des modernen Routers
In Joomla! unter System → Konfiguration → Site → Suchmaschinenoptimierung (SEO) kann das Routing mit "Suchmaschinen-freundliche URL" aktiviert werden. Optional lässt sich mit "Dateiendung an URL anfügen" die Endung (z.B *.html) aktivieren. Zudem lässt sich in den Komponenten Einstellungen "IDs aus den URLs entfernen" aktivieren.
Wichtige Strukturelemente
- Menüeinträge definieren die Haupt-URL-Segmente.
- Kategorien liefern zusätzliche, optionale Segmente, um eine weitere Verschachtelung der Struktur darzustellen.
- Aliase bestimmen die Darstellung der finalen URL-Segmente.
Schritt-fĂĽr-Schritt: So entsteht eine SEF-URL in Joomla!
Haupt-MenĂĽeintrag (Root-Ansicht)
Der MenĂĽeintrag der obersten Ebene, z. B. Galerie mit Alias gallery, erzeugt das erste URL-Segment: /gallery/.
UntermenĂĽ-Items
Zusammen mit einem MenĂĽeintrag fĂĽr die Bilderliste, z. B. Alias images, wird daraus: /gallery/images/.
Kategorien
Eine Kategorie mit Title "Landschaften" und Alias landschaften könnte ein weiteres Segment ergeben.
Items (z. B. Bilder, Artikel)
Eine Detail-Ansicht des Bildes mit ID 1 und Alias testimage wird z. B. zu: /gallery/images/1-testimage.html.
Leitfaden zur gezielten URL-Gestaltung
Die Menüeinträge sind der Schlüssel zu schönen URLs. Nur mit einer guten und durchdachten Struktur der Menüeinträge kannst du deine gewünschte URL Struktur erzeugen. Einige Komponenten, wie die JoomGallery erzeugen bei der Installation ein Set an Menüeinträgen, welche bereits für die meisten Anwendungen der Komponente gute URLs erzeugen.
Um deine gewünschten URLs zu erzeugen müssen somit die richtigen Menüeinträge in Kombination mit dem richtigen Router erstellt werden.
- Haupt-MenĂĽeintrag definieren z. B.
gallery, erstes Segment - Unter-Menüeinträge anlegen z. B.
images,categories. - Kategorien strukturieren eindeutige Aliase:
landschaften,portraits. - Bilder mit klaren, eindeutigen Aliasen z. B.
testimage. - Router-Einstellungen prĂĽfen
- Ergebnis-URLs testen
- Parameter minimieren Durch Menüeinträge oder Kategorie-Alias vermeiden.
AusfĂĽhrungen zu Aliasen
Für Kategorien und vorallem Bilder ist es sehr wichtig, dass eindeutige Aliase existieren. Dies ist insbesondere dann wichtig, wenn "IDs aus den URLs entfernen" aktiviert ist. Der Router hat nämlich die Aufgabe, das entsprechende Element (Bild oder Kategorie) heraus zu finden einzig mit den verfügbaren Segmenten. Dazu sucht er in Datenbank nach dem Element, welches den entsprechenden Alias aufweist. Im besten Fall existiert nur genau ein Element mit diesem Alias. Schauen wir uns das an einem Beispiel an:
index.php/gallery/images/5-flugzeug-2.html
Dieses Bild wurde in eine Kategorie hochgeladen, in welcher bereits ein Bild existierte mit dem Alias flugzeug. Deshalb hat die JoomGallery automatisch ein "-2" hinten am Alias angehängt.
Moderner Router - Standard
Der Standard Router erstellt damit das komplette Bild-Segment nach dem Schema ID-ALIAS und es wird zu 5-flugzeug-2. Bei der RĂĽckkonvertierung, weiss der Router aufgrund des vorhergehenden Segments, dass es sich hier um ein Bild-Segment handelt. Er muss also nach einem Bild suchen. In diesem Fall ist es fĂĽr ihn einfach. Es existiert eine Zahl vor dem ersten Bindestrich. Diese Zahl interpretiert er sofort als die Bild-ID.
Falls "IDs aus den URLs entfernen" deaktiviert ist, fehlt die ID und das Bild Segment wird nach dem Schema ALIAS ausgegeben. Der Router sucht nun also in der Bild-Tabelle in der Datenbank nach einem Bild mit dem Alias flugzeug-2. Er nimmt das erste Suchergebnis, das er findet.
Probleme
Wenn "IDs aus den URLs entfernen" deaktiviert ist, können nun folgende Probleme entstehen:
- Alias nicht eindeutig: Falls mehrere Bilder mit dem gleichen Alias existieren, kann es sein, dass der Router das falsche Bild erwischt bei der Suche. Entsprechend wird dann auch das falsche Bild dargestellt oder verlinkt.
- Alias mit einer Zahl: Falls der Alias mit einer Zahl gefolgt von einem Bindestrich beginnt, also z.B so
2012-berlin, dann interpretiert der Router2012automatisch als die ID des Bildes. Es wird dann das Bild mit ID=2012 dargestellt oder verlinkt statt des gewĂĽnschten Bildes mit Alias=2012-berlin.
Moderner Router - JG3 Variante
Der Router funktioniert in weiten Teilen gleich. Jedoch wird ein Bild-Pfad hier von einigen Kategorie-Segmenten angeführt. Diese helfen dem Router, das richtige Bild zu finden, da es die Suche nach dem Bild auf eine bestimmte Kategorie beschränkt. Die Gefahr, dass das falsche Bild gefunden wird ist hier somit kleiner.
Beispiele
Komponente;Ansichtstyp;Item-Slug (Beitrag/Bild);Kategorie-Struktur;Ausgabe-Format;MenĂĽ-Struktur
Die Query-Parameter Komponente und Ansichtstyp werden vom Router nur intern verwendet und führen nie zu einem Segment in der URL, wird also vom Router "geschluckt". Alle anderen verfügbaren Query-Parameter werden gemäss oben beschriebenem Prinzip verarbeitet. Alle Query-Parameter, welche der Router nicht in Segmente umwandeln kann, werden als Query-Parameter hinten an der URL wieder angehängt.
Beispiel 1: JoomGallery (Moderner Router - Standard)
index.php?option=com_joomgallery&view=image&id=12:testimage&catid=2&format=html&Itemid=42
index.php/gallery/images/12-testimage.html?catid=2
gallery→ Alias des Haupt-Menüeintrags des Types "Galerieansicht"images→ Alias des Menüeintrags des Types "Bilderliste" als Kind von gallery12-testimage→ Item-ID + Alias?catid=1→ Parameter, der nicht über Menü/Kategorie auflösbar war wird hinten als Query-Parameter angehängt.
Ich habe in diesem Beispiel extra die Kategorie in die Query-Parameter übernommen, weil dies bei einer migrierten JoomGallery Inhalten so sein wird, da der JG3 Router anders getickt hat und die Kategorie Info gebraucht hat. Inhalte, die über die JG4 erstellt wurde, haben diesen Query-Parameter natürlich nicht und die URL sieht entsprechend auch schön aus, ohne "catid=2" am Ende.
Beispiel 2: JoomGallery (Moderner Router - JG3 Variante)
index.php?option=com_joomgallery&view=image&id=12:testimage&catid=2&format=html&Itemid=42
index.php/gallery/nature/12-testimage.html
gallery→ Alias des Haupt-Menüeintrags des Types "Galerieansicht"nature→ Alias der Kategorie mit der ID 212-testimage→ Item-ID + Alias
Beispiel 3: Beiträge (Moderner Router)
index.php?option=com_content&view=article&id=23:minas-tirith&catid=66&Itemid=42
index.php/lotr-wiki/cities-in-middleearth/minas-tirith
lotr-wiki→ Alias des Haupt-Menüeintrags des Types "Kategorieblog"cities-in-middleearth→ Alias der Kategorie mit der ID 66minas-tirith→ Item Alias (hier wurde die Einstellung "ID Entfernen" aktiviert)
Quelle: https://manual.joomla.org
Quellen
- Pull-Request JoomGallery (JG4) – Moderner Router https://github.com/JoomGalleryfriends/JG4-dev/pull/265
- Joomla Dokumentation – Neues Routing System https://docs.joomla.org/J3.x:New_Routing_System/de
- Joomla – Supporting SEF URLs in Components https://docs.joomla.org/J3.x:Supporting_SEF_URLs_in_your_component/en
- Moderne Router Notizen https://quantumwarp.com/kb/articles/30-joomla/962-my-joomla-modern-router-notes
- Joomla Handbuch – Routing https://manual.joomla.org/docs/next/general-concepts/routing/