URL-Aliase in Drupal 7: Taxonomy Term automatisch in URL einfügen

URL-Aliase in Drupal 7: Taxonomy Term automatisch in URL einfügen

Bis Drupal 6 konnte man "lesbare URL" (auch URL-Aliase genannt) sehr leicht mit Hilfe von Taxonomy-Terms nach diesem Muster erstellen:

[vocab]/[termpath]/[title]

Dabei ist [vocab] die Bezeichnung des Taxonomy-Vokaburlars, das einem Inhaltstypen zugeordnet ist, [termpath] der Taxonomiebegriff (ggf. mit übergeordneten Begriffen, bei einer Baumstruktur) und [title] der Titel einer Node (also die "Überschrift" eines Inhaltes).


So ließen sich anstelle wenig aussagekräftiger URLs wie


meine.domain.de/node/1798


ansprechendere URLs wie diese automatisch erstellen (wobei der Begriff "hardware" ein Taxonomy Term ist):


meine.domain.de/magazin/hardware/reparatur-eines-scanners


In Drupal 7 wurde allerdings das Taxonomy-System geändert. Ein Taxonomy-Vokabular wird jetzt nicht mehr durch Auswählen der Inhaltstypen in "Vokabular bearbeiten" zugeordnet. Stattdessen muss man zunächst bei dem Inhaltstypen ein CCK-Feld erstellen. Diesem den Feldtyp "Referenz auf Taxonomy-Begriffe" geben und anschließend das gewünschte Vokabular auswählen.


Die Schritte dazu im Einzelnen:


1. Man erstellt ein neues Taxonomy-Vokabuler und nennt es bspw. "Kategorie"


2. Jetzt erzeugt man bei dem/den Inhaltstypen, der/die mit diesem Taxonomy-Vokabular arbeiten sollen, ein neues Feld mit dem Feldtyp "Referenz auf Taxonomy-Begriffe", das wir der einfachheit halber auch "kategorie" nennen (wichtig: Der Feldname muss mit einem Kleinbuchstaben beginnen!). Es bekommt automatisch den Prefix "field_" und ist so künftig leicht identifizierbar.


3. Im nächsten Schritt ordnet man dem Feld das Taxonomy-Vokabular zu, hier also "Kategorie".


Diese Änderung der Programmierlogik hat leider einen entscheidenden Nachteil: In der Konfiguration von URL-Alias gibt es keine Möglichkeit bei den "Replacement Patterns" (also den Ersetzungsmustern" den bisherigen [termpath] auszuwählen. Man kann lediglich noch den Vokabularnamen selber einbauen, hat aber keinen Zugriff mehr auf die Taxonomy-Begriffe (die Taxonomy Terms). Aber zum Glück gibt es Abhilfe.


Um wieder die gewünschten Ersetzungsmuster zusammenstellen zu können muss man das Modul Entity API installieren. Anschließend aktiviert man auf der Drupal-Modulseite Entity API und Entity Tokens. Entity Tokens stellt Tokens (Platzhalter) für Properties zur Verfügung die noch keine eigenen Tokens besitzen aber der Entity API bekannt sind.


Hat man nach der obigen Anleitung sein Taxonomy-Vokabular einem Feld zugeordnet löscht man zunächst den Seitencache. Dann geht man nur auf "Konfiguration >> Suche und Metadaten >> URL-Aliase >> Patterns". Dort findet man unter "Replacement patterns" einen zusätzlichen Eintrag mit dem Namen des Vokabulars - in unserem Beispiel "Kategorie". Klappt man diesen auf, so sieht man zusätzliche Tokens, die man in seinem URL-Alias einbauen kann:













Name Token Beschreibung
Anzahl der Beiträge [node:taxonomy-vocabulary-1:node-count]  Die Anzahl der Beiträge die mit dem Taxonomie Begriff getagt wurden.
Begriffs-ID [node:taxonomy-vocabulary-1:tid] Die eindeutige ID des Taxonomiebegriffs
Beschreibung [node:taxonomy-vocabulary-1:description] Die optionale Beschreibung des Taxonomiebegriffs
Gewichtung [node:taxonomy-vocabulary-1:weight] Das "Gewicht" des Terms, der verwendet wird um die Sortierreihenfolge in der Termliste festzulegen.
Name [node:taxonomy-vocabulary-1:name] Der Name des Taxonomiebegriffs.
Root term  [node:taxonomy-vocabulary-1:root] Der Root-Term eines untergeordneten Terms
URL [node:taxonomy-vocabulary-1:url] Die URL des Taxonomie Begriffs
URL bearbeiten [node:taxonomy-vocabulary-1:edit-url] Die URL der "Term bearbeiten"-Seite
Vokabular [node:taxonomy-vocabulary-1:vocabulary] Das Vokabular zu dem dieser Taxonomiebegriff gehört.
Übergeordneter Begriff [node:taxonomy-vocabulary-1:parent] Der übergeordnete Begriff des Taxonomiebegriffs, wenn es einen gibt.

 



Nun kann man beispielsweise ein "Pattern" nach dem Muster [node:field-category:name]/[node:title] eintragen, um eine URL meine.domain.de//term/title automatisch erzeugen zu lassen.


Eine Einschränkung gibt es leider derzeit noch: Das Feld, das mit dem Vokabular verknüpft ist, muss so eingestellt werden, dass der User nur genau einen Taxonomy Term wählen kann. Damit kann man nun nicht mehr einen Beitrag problemlos in mehreren Kategorien erscheinen lassen.