2 Stimmen

Taxonomiebasierte Navigation und URL-Namespace in Drupal

Ich versuche, eine veraltete PHP-Website zu aktualisieren ( http://cordair.com/ ), um mit Drupal und Ubercart zu arbeiten. Eines der wichtigsten Dinge ist es, sicherzustellen, dass URLs, die Leute mit Lesezeichen versehen haben, gleich bleiben.

Meine Taxonomie sieht in etwa so aus

Catalog
 + Artists
    + Pablo Picaso
    + Lenardo DaVinci
 + Medium
    + Sculpture
    + Painting
    + Print

Die Taxonomie ist mehrstufig. Jeder hat also 1 Künstler und möglicherweise mehrere Medien (z. B. kann etwas sowohl ein Originalgemälde als auch als Druck erhältlich sein). Ich möchte, dass die Website in der Lage ist, eine Seite aufzurufen unter http://foo.com/picaso die alle Artikel bei oder unter Pablo Picaso auflistet. Ich möchte auch eine Seite haben wie http://foo.com/paintings die alle Gemälde aller Künstler auflistet.

Wie kann man das am besten bewerkstelligen? Es sieht so aus, als müsste ich Path Auto verwenden, aber es ist wirklich verwirrend, herauszufinden, was die richtigen Einstellungen sind. Ich sehe auch keine Möglichkeit, die Art und Weise, wie der Taxonomiebegriff in eine URL umgewandelt wird, individuell anzupassen; im Moment erhalte ich nur IDs. Es sieht so aus, als gäbe es eine Möglichkeit, den Begriffsnamen zu verwenden, aber die URLs, die ich zu erstellen versuche, verwenden nur den Nachnamen und nicht den Vornamen.

Verzeihen Sie mir, dass ich kein Drupal-Fan bin, denn ich bin sicher, dass dies alles möglich ist und wahrscheinlich einfacher ist, als ich denke.

2voto

Henrik Opel Punkte 19268

Ein möglicher, aber fragwürdiger Ansatz:

Um nur die Nachnamen zu extrahieren, müssen Sie ein benutzerdefiniertes Token implementieren für Taxonomiebegriffe, die die notwendige Stringmanipulation vornehmen. (Sie sollten eine Variation der Standard [cat] Token. Dieses Beispiel für ein benutzerdefiniertes Knotentitel-Token könnte auch helfen, den Prozess zu verstehen.)

Allerdings, dieser Ansatz hat einige gravierende Nachteile:

Empfohlener alternativer Ansatz:

Um die oben genannten Mehrdeutigkeitsprobleme zu vermeiden und in Anbetracht der Tatsache, dass die Website, die Sie ersetzen wollen, bisher nur eine ziemlich kleine Anzahl von Zielnamen hat, würde ich einfach den Standard [cat] Token, unter Verwendung der vollständigen Namen für die URLs (Pathauto ermöglicht es Ihnen, Standard-Ersetzungen für Sonderzeichen festzulegen, z. B. Leerzeichen durch Unterstriche oder Bindestriche). Anschließend können Sie in den .htaccess-Dateien der Website Regeln für die Umleitung aller alten URLs, die nur den Nachnamen enthalten, einfügen, damit diese weiterhin funktionieren, während die neuen Versionen beworben werden:

# http://example.com/picasso  => http://example.com/pablo_picasso
RewriteRule ^picasso $ http://example.com/pablo_picasso [L,R=301]
# ... and so on for all old urls that changed

(Sie können auch die Modul zur Pfadumleitung als "Drupal-interne" Alternative zur .htaccess-Manipulation).


Außerdem würde ich empfehlen, die "Katalog"-Hierarchie in zwei separate Vokabulare aufzuteilen, z. B. "Künstler" und "Medium". Dies würde zwar zu zwei separaten Taxonomiefeldern auf dem Knoteneingabeformular führen, aber es entspricht dem semantischen Unterschied und würde mehr Flexibilität für das Filtern, Sortieren und Gruppieren der Knoten in der Zukunft bieten.

0voto

Eric M Punkte 101

Path auto dient der automatischen Generierung von Pfadaliasen für Inhalte auf der Grundlage von Attributen für diese Inhalte.

Es sieht so aus, als ob Sie eher davon sprechen, verschiedene Inhaltstypen (cck) zu haben und diese Typen mit dem Modul node-reference zu verknüpfen. Dann sind Ihre picaso und Gemälde-URLs einfache Ansichten, die Argumente annehmen oder exponierte Filter verwenden könnten, um die angezeigten Knoten weiter einzuschränken.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X