Joomla! SEF URLs ohne ID des Artikels
ID steht in der Informatik für Bezeichner (auch Identifikator). Elemente (Objekte) werden über eine ID eindeutig identifiziert. Jeder Artikel in Joomla! hat eine solche eindeutige ID, die keinem anderen Artikel gleicht. Deswegen wird die ID für die Bildung der URLs einbezogen, um den gewünschten Artikel korrekt anzusprechen. Viele Joomla! Benutzer stört jedoch die ID in der URL, obwohl diese aus SEO-Sicht keinen Einfluss auf das Ranking in der Suchmaschine nimmt. Hier spielen eher ästhetische Aspekte eine Rolle. Eine sprechende URL ohne Zahlen sieht für die meisten einfach schöner aus. Wie erreicht man solche URLs ohne IDs?
Wir sprechen über mögliche Lösungen mit den Joomla! Bordmitteln. Natürlich kann man es auch mit 3rd Party SEF Erweiterungen hinbekommen, jedoch sollte man nach Möglichkeit auf solche Erweiterungen verzichten, da diese früher oder später mehr Probleme als Nutzen mit sich bringen (Datenbank wird zugemüllt, Seitenaufrufe werden verlangsamt, Umleitungen terminieren nicht usw.).
Jeder Artikel verfügt über einen Alias. Diesen Alias kann man manuell setzen oder er wird beim Speichern des Artikels automatisch gesetzt. Der Alias dient in Verbindung mit der ID zur Generierung der URL. Werden Artikel einem Menüpunk zugewiesen, sind sie darüber eindeutig ansprechbar und die URL wird nur aus dem Alias des Menüpunktes erstellt. Somit haben wir schon die Lösung gefunden, wie man IDs in der URL vermeiden kann: Artikel im Menü verlinken und sich über schöne URLs freuen!
Was macht man aber, wenn man den Artikel nicht sichtbar verlinken möchte? Dafür gibt es eine einfach Lösung, die oft als Schattenmenü-Lösung bezeichnet wird. Man erstellt ein Menü, das man nicht über ein Menümodul verlinkt. In diesem Menü kann man beliebig viele Zuweisung vornehmen. Alle zugewiesenen Artikel erhalten die angegebene URL-Struktur ohne irgendwelche IDs.
Gibt es denn keine andere Lösung, die man mit Bordmitteln erreichen kann? Diese Frage wird man sich stellen, sobald es etwas mehr Artikel werden und man keine Lust / Zeit hat, alle Artikel manuell zu verlinken. Doch, es gibt eine Lösung, die nur sehr wenige Benutzer kennen. Im Core ist tatsächlich eine Funktion eingebaut, mit der man ID-lose URLs auch ohne Verlinkung des jeweiligen Items im Menü erstellen kann. Die Funktion wurde bereits in Joomla! 1.6 implementiert, jedoch nie publik gemacht, da es noch zu Fehlern bei der Nutzung führen kann. Leider wurden diese Fehler bisher nicht gefixt und die besagte Funktion schlummert im Core vor sich hin.
Man kann die Funktion mit einem kleinen Eingriff aktivieren. In der Datei router.php unter components/com_content findet man folgenden Eintrag:
$advanced = $params->get('sef_advanced_link', 0);
Um die Funktion zu aktivieren, muss die 0 mit einer 1 ausgetauscht werden:
$advanced = $params->get('sef_advanced_link', 1);
Diese Änderung lässt sich in anderen Core-Komponenten ebenfalls durchführen. Was ist die Folge der Änderung? Alle URLs werden ohne IDs erstellt. Da Aliase in einer Kategorie nicht gleich sein können, gibt es hier auch keine Überschneidungen. Die Prüfung geschieht beim Speichern. Nutzt man gleiche Aliase in unterschiedlichen Kategorien, dann sind die Artikel trotzdem eindeutig bestimmt, da die Aliase der Kategorien ebenfalls in der URL verwendet werden.
Wie oben bereits erwähnt, gibt es in einigen Situationen Probleme, weswegen die Funktion nur auf einer Testumgebung aktiviert und getestet werden sollte. In meinen Tests wurden 404er Fehler erzeugt, wenn man Kategorien im Menü verlinkt hat. Man sollte die Funktion nicht auf produktiven Websites einsetzen, so lange sie nicht ausgereift ist. Sie demonstriert aber, dass das Unterfangen eigentlich möglich ist!
Fazit:
Bei wenige Artikeln setzt man die Menüverlinkung ein, bei vielen Artikeln arrangiert man sich mit der Zahl in der URL. Seien wir mal ehrlich: Nicht die URL ist entscheidend, sondern der Inhalt!
