Das Drupal Modul Pathauto erstellt automatisch einen URL-Alias nach einem dafür festgelegten Muster. Dadurch ist es möglich automatisch sprechende URLs zu erstellen, die z.B. den Titel oder bestimmte Keywords wie Taxonomy-Terms beinhalten. Die Gewichtung des Inhaltes wird so höher eingestuft, da in der URL auch übereinstimmende Keywords verwendet werden.
Der Mehrwert von pathauto besteht also darin, dass man nicht bei jeden erzeugten Inhalt manuell ein URL Alias vergeben muss, sondern dies automatisch übernommen wird. Das ist zum einen sehr bequem und zum anderen bietet es Möglichkeiten die URL Struktur vorzugeben. Diesen Mehrwert haben natürlich auch schon andere Drupalseiten erkannt und sind für die steigende Beliebtheit des Moduls verantwortlich, wie die folgende Grafik schön zeigt.
1. Voraussetzungen
Wie sind die Voraussetzungen zum Einsatz von Pathauto?
1.1 mod_rewrite
Für den Einsatz von URL Aliases und somit auch für pathauto wird das Apache Module mod_rewrite benötigt. Dies sollte bei den meisten Webhostern aktiviert sind und somit kein Problem darstellen.
1.2 Aktivierung Lesbare URLs
Unter dem Menüpunkt Verwaltung » Konfiguration » Suche und Metadaten » Lesbare URLs (/admin/config/search/clean-urls) müssen die lesbaren URLs aktiviert werden. Diese Funktion kann nur aktiviert werden, wenn auch mod_rewrite aktiviert ist. Ist der Server nicht entsprechend konfiguriert, wird die Checkbox deaktiviert dargestellt.
Ohne Aktivierung der lesbaren URLs sieht eine Beispiel URL so aus:
/?q=node/1
Nach der Aktivierung so:
/node/1
1.3 path und token Drupal Module
Pathauto ist von zwei Modulen abhängig:
- path: dieses Modul wird durch Drupal Core bereit gestellt und ist unter der Modul-Gruppe Kern Optional zu finden. path ermöglicht die manuelle Vergabe von URL Aliases.
Dadurch wird also möglich, dass eine URL von
/node/1
in folgendes Beispiel manuell geändert wird:
/blog/sprechende-url
- Token Drupal Modul:
Wie der Name schon vermuten lässt, stellt das Token Modul sogenannte Ersetzungsmuster bereit. Diese können zur Erstellung der URL Muster verwendet werden.
Hier ein Ausschnitt mit verfügbaren Tokens, welche zur Erstellung eines URL Musters verwendet werden können:
1.4 GlobalRedirect Drupal Modul (optional, aber empfohlen)
Mit dem Einsatz von Redirect verhindert man sogenannten duplicate content. Beispiel: Der Inhalt zur sprechenden URL /blog/sprechende-url wird auch unter /node/1 und unter /?q=node/1 ausgegeben. Mit dem Einsatz von GlobalRedirect werden die beiden letzten Aufrufe auf die sprechende URL weitergeleitet (301 Weiterleitung).
1.4 Redirect Drupal Modul (optional, aber empfohlen)
Redirect ermöglicht die automatische Erstellung (oder natürlich auch manuelle Erstellung) einer URL Umleitung, falls eine URL geändert wird.
1.5 Transliteration Drupal Modul (optional)
Kommt eine andere Sprache für die Inhalte als englisch zum Einsatz, ist das Transliteration Modul erforderlich, damit pathauto Umlaute und Akzente berücksichtigt. Wird dieses Modul nicht eingesetzt, werden entweder diese Zeichen entfernt oder nicht umgewandet (je nachdem, ob die Einstellung “Einschränken der Zeichen auf den ASCII-96 Zeichensatz” gesetzt ist).
2. Installation
Die Installation des pathauto Moduls führt man nach dem Standard-Installationsverfahren für Drupal durch:
- Modul herunterladen: https://www.drupal.org/project/pathauto
- Modul extrahieren
- Modulverzeichnis in das Verzeichnis sites/all/modules oder sites/default/modules ablegen
- Modul pathauto in der Drupal Modulverwaltung aktivieren
3. Einstelllungen für Pathauto
Um die Einstellungen anzupassen, geht man unter Verwaltung » Konfiguration » Suche und Metadaten » URL-Aliase (/admin/config/search/path/settings). Hier können Anpassungen zur Länge der URL, Separator, Kodierung und zum Verhalten bei der Aktualisierung gemacht werden (und noch vieles mehr).
Die Standardeinstellungen sind bereits gut zu gebrauchen. Folgendes sollte aber angepasst werden:
Aktion bei Aktualisierung: Erstelle einen neuen Alias. Lösche den alten Alias. und durch das Redirect Modul wird automatisch eine Umleitung von der alten URL zur neuen URL eingerichtet. (erfordert das Drupal Redirect Modul)
Aktion beim Aktualisieren: Umcodieren, bevor der Alias erstellt wird
Dadurch werden Umlaute und Akzente umgewandelt, wie z.B. ein ö in ein oe (erfordert das Transliteration Redirect Modul)
- Aktion beim Aktualisieren: Zu entfernende Zeichenketten
Hier sollten die Stopwords zur verwendeten Sprache hinterlegt sein. Diese Wörter werden dann nicht im URL Alias aufgenommen. Erzeugt man z.B. aus dem Inhaltstitel “Das Leben ist schön” ein URL Alias und die Stopwords das und ist sind eingetragen, würde die URL lauten: /leben-schoen Die Wörter die keine Information bzw. kein Keyword darstellen, werden somit automatisch entfernt.
Hier eine Stopword Liste, die für eine deutsche Webseite eingesetzt werden kann:
aber,als,am,an,auch,auf,aus,bei,bin,bis,bist,da,dadurch,daher,darum,das,daß,dass,dein,deine,dem,den,der,des,dessen,deshalb,die,dies,dieser,dieses,doch,dort,du,durch,ein,eine,einem,einen,einer,eines,er,es,euer,eure,für,hatte,hatten,hattest,hattet,hier,hinter,ich,ihr,ihre,im,in,ist,ja,jede,jedem,jeden,jeder,jedes,jener,jenes,jetzt,kann,kannst,können,könnt,machen,mein,meine,mit,muss,musst,musst,müssen,müßt,nach,nachdem,nein,nicht,nun,oder,seid,sein,seine,sich,sie,sind,soll,sollen,sollst,sollt,sonst,soweit,sowie,und,unser,unsere,unter,vom,von,vor,wann,warum,was,weiter,weitere,wenn,wer,werde,werden,werdet,weshalb,wie,wieder,wieso,wir,wird,wirst,wo,woher,wohin,zu,zum,zur,über
Und hier noch eine Stopword Liste für englische Webseiten:
a,about,above,after,again,against,all,am,an,and,any,are,aren't,as,at,be,because,been,before,being,below,between,both,but,by,can't,cannot,could,couldn't,did,didn't,do,does,doesn't,doing,don't,down,during,each,few,for,from,further,had,hadn't,has,hasn't,have,haven't,having,he,he'd,he'll,he's,her,here,here's,hers,herself,him,himself,his,how,how's,i,i'd,i'll,i'm,i've,if,in,into,is,isn't,it,it's,its,itself,let's,me,more,most,mustn't,my,myself,no,nor,not,of,off,on,once,only,or,other,ought,our,ours
Die Listen sollten auf das jeweilige Thema der Webseiten angepasst werden. Sofern ein Projekt mehrere Sprachen verwendet, sollten die Stoppwords nicht zusammen gemischt werden, sondern anstelle dessen für jede Sprache eine eigene Stoppword Liste eingesetzt werden. Dies kann mit dem i18n Modul erreichen, indem man die Variable pathauto_ignore_words als mehrsprachig markiert.
4. Festlegung der URL Muster (URL Design)
Es können für einzelne Inhaltstypen, Taxonomie-Begriffe und für Benutzer sogenannte Muster hinterlegt werden, welche die Zusammensetzung der URL beschreiben. Für jeden Inhaltstypen kann ein eigenes Muster hinterlegt werden, handelt sich sich dabei um einen mehrsprachigen Inhaltstyp, kann für jede Sprache ein Muster hinterlegt werden.
Vergibt man ein Standard-Pfadmuster, wird für alle Inhalte und Kategorie-Begriffe ohne individuelles Muster das Muster des Standard-Pfads verwendet.
Innerhalb eines Musters kann man Buchstaben, Zahlen oder Sonderzeichen verwenden - und Ersetzungsmuster. Die Ersetzungsmuster werden bei der Erstellung der URL Aliase mit dem zugeordneten Wert ersetzt.
Das Beispiel zeigt auf, dass als Standard Muster für alle Node-Types das Datum mit dem Format 2012-02-22 als Verzeichnis verwendet werden soll. Ergänzt mit dem Titel des Inhaltes. Daraus ergibt sich im Beispiel folgende URL: http://www.meinedomain.de/2012-02-22/mein-neuer-inhalt
Deaktivierung für die Erzeugung von URL Aliases einzelner Inhaltstypen
Will man keine URL Aliase erzeugen, lässt man das Feld leer. Wenn für bestimmte Inhaltstypen und Kategorien Aliase erstellt werden sollen und für die anderen nicht, dann lässt man das Feld für den Standardwert leer und befüllt die spezifischen Felder mit Ersetzungsmuster.
5. Eigene Tokens für URL Muster einsetzen
Wenn die Ersetzungsmuster aus dem Token Modul nicht ausreichen, kann man auch eigene Tokens erstellen. Dies ist z.B. für eine komplexe Abhängigkeit verschiedener Inhalte erforderlich, oder wenn externe Daten mit bei der URL-Generierung berücksichtigt werden müssen.
Um den eigenen Token bekannt zu machen, verwendet man folgenden Hook. Hier im Beispiel wird der Token für Nodes bereitgestellt:
/**
* Implements hook_token_list().
*/
function meinmodul_token_list($type = 'all') {
if ($type == 'node') {
$tokens['node']['mein-token-name'] = t('Short description of my token funktionality');
return $tokens;
}
}
Damit trägt der eigene Token den Namen mein-token-name und kann überall in Drupal verwendet werden, wo Token unterstützt sind (z.B. autopath oder views)
Nun fehlt noch die Funktion, welche die eigentliche Ersetzung durchführt:
/**
* Implements hook_token_values().
*/
function meinmodul_token_values($type, $object = NULL, $options = array()) {
$values = array();
if ($type == 'node') {
$node = $object;
// TODO: Replace the check_plain() call with your own token value creation logic!
$values['mein-token-name'] = check_plain($node->title);
}
return $values;
}
Der Inhalt für $values[‘mein-token-name’] kann nun nach Bedarf angepasst werden.
6. Massenaktualisierung
Mit der Funktion Massenaktualisierung kann man Aliase erzeugen, für die ein Muster hinterlegt wurde, aber noch kein URL Alias vorliegt. Dies ist dann der Fall, wenn man die Konfiguration oder Muster von Pathauto geändert hat und vorher schon Inhalte existiert haben. Will man auch neue URL Aliases für Inhalte erzeugen, welche schon ein URL Alias besitzen, müssen diese URL Aliase vorher gelöscht werden.
Für die Massenaktualisierung und auch für das Löschen der URL Aliase können folgende Einschränkungen getroffen werden:
- Pfade für Inhalte
- Pfade für Taxonomie-Begriffe
- Pfade für Benutzer
7. URL Aktualisierung mit eingeschränkten Rechte
In speziellen Szenarien ist die Konfiguration und die Berechtigung so gewählt, dass z.B. ein Redakteur keine Anpassung an der URL machen darf/muss. Was aber, wenn sich Werte für ein Ersetzungmuster nach der Erstellung geändert haben?
Das Standardverhalten von Pathauto ist wie folgt:
- Neuer Inhalt wird erzeugt und Alias wird angelegt
- Inhalt wird geändert, von dem auch eingesetzte Ersetzungsmuster betroffen sind.
- Pathauto lässt die alte URL bestehen und das Häkchen für automatische Erstellung einer URL ist nicht gesetzt
Die Lösung findet man mit dem Modul Pathauto persistent state. Dieses Modul sorgt dafür, dass das Häkchen für automatische URL Erstellung immer gesetzt ist, auch wenn die URL geändert werden würde.