Das Örtchen RSS-Feed
Suchen
Blog
Ähnliche Beiträge
Neueste Kommentare
Neueste Einträge
Populäre Einträge
Tagwolke
addon auswertung barcamp blog bug cms cms made simple datenkrake drupal feed film firefox frickeln friday gewinnspiel hardware how-to individualisierung meinung mmo modul nas php problem rss se7en server sicherheit sicherung software spiel teil theme trailer unterhaltung update windows windows 7 wordpress wow
Monatsarchiv

Drupal 7: Breadcrumbs für statische Websites

Da gestern mein erstes Projekt auf Basis von Drupal 7 online ging, kann ich mir heute etwas Zeit zum Beleuchten der Probleme nehmen. Problem Nr. 1 war wie es der Titel schon andeutet, die Umsetzung von sinnvollen Breadcrumbs. Hierbei scheint Drupal in der Version 7 immer noch das Problem zu haben, daß zur Bildung der Breadcrumbs lediglich das Menü Navigation ("navigation") benutzt wird. In meinen Projekten nutze ich aber im Normalfall das Hauptmenü ("main-menu")  zusammen mit einem Sekundärmenü ("menu-secondary-menu") und oftmals noch einem weiteren Menü für Quicklinks ("menu-quick-links"). Die Quicklinks bieten hierbei einen Direktzugriff auf wichtige Unterseiten des Sekundärmenüs.

Die Probleme

Im Rahmen meiner Breadcrumbs hatte ich also zwei Probleme zu lösen. So soll Drupal doch bitte das korrekte Menü für die Breadcrumbs nutzen und dabei auch noch korrekt arbeiten, wenn ein Eintrag in zwei Menüs auftaucht.

Die Lösung

Theoretisch lassen sich beide Probleme ziemlich einfach lösen, da hierfür das Modul Menu Breadcrumb optimal geeignet ist. Dieses Modul bietet uns gleich mehrere Features:

  1. Ermittlung in welchen Menüs die jeweilige Seite auftaucht
  2. Gewichtung der einzelnen Menüs (falls eine Seite in mehreren Menüs auftaucht)
  3. Anhängen des aktuellen Seitentitels an die Breadcrumbs (auf Wunsch verlinkt)

Dies hat in meinen Drupal 6-Projekten auch immer wunderbar funktioniert. Bei Version 7.x-1.3 trat jedoch ein fieser Bug auf, sofern die Seite in mehreren Menüs enthalten ist. Hier wurden die Breadcrumbs dummerweise immer auf Basis der Quicklinks erstellt, womit jegliche Elternseiten fehlten (Quicklinks haben eine flache Hierarchie).

Bei den problematischen Seiten war es auch egal, wie die Gewichtung der Menüs aussah oder ob einzelne Menüs sogar deaktiviert waren. Genau dieses Problem beschreibt eine Meldung im Bugtracker. Leider gab es noch keine Reaktion auf diese Meldung, weswegen ich selbst nach der Ursache forschte.

Bei meinem Debugging fand ich die Ursache in der Datei menu_breadcrumb.module, welche in Zeile 326 nachfolgenden Code enthält:

 $active_menus = menu_get_active_menu_names(); 

Eine Überprüfung des Variableninhalts zeigte mir, daß vermutlich durch eines der anderen installierten Module der Rückgabewert der Funktion unerwartet ist. Der Rückgabewert enthält nämlich alle existierenden Menüs als Array. In der folgenden Codezeile würde dann das ermittelte aktive Menü (mit der höchsten Gewichtung) an dieses Array angehängt, womit es zweimal als Wert im Array auftaucht. Dummerweise scheint jedoch die Reihenfolge im Array festzulegen, welches Menü als Breadcrumb genutzt wird. Im Rückgabewert tauchen die Quicklinks vor dem eigentlich gewünschten Menü auf, was zum festgestellten Problem führt.

 $active_menus = array(); 

Ich habe mich als schnelle (wenn auch böse) Lösung dafür entschieden, den Rückgabewert gar nicht mehr zu nutzen. Ich konnte keine negativen Auswirkungen auf die restlichen Module meiner Installation feststellen, halte dies jedoch für relativ wahrscheinlich. Eventuell ist auch ein Bugfix auf Basis von array_unshift möglich, dies überlasse ich aber lieber dem Modul-Maintainer.

Fazit

Die Nutzung von Content-Management-Systemen mit Erweiterungsmodulen ist immer wie das Wandern auf einem schmalen Grad, da kein Entwickler alle sonstigen Module kennen kann und somit grundsätzlich negative Seiteneffekte bei der Kombination von Modulen auftreten können. Ich vermute, daß die Ursache meiner aktuellen Probleme das Modul Administration Menu ist, hatte jedoch keine Lust dies zu testen.

Hallo! Bist du neu hier? Dann abonniere doch den RSS-Feed dieses nicht mehr ganz so stillen Örtchens, um über meine geistigen Ergüsse auf dem Laufenden zu bleiben. Alternativ besteht auch die Möglichkeit, sich von FeedBurner per E-Mail über meine Ausscheidungen benachrichtigen zu lassen.

Kommentar hinzufügen

(If you're a human, don't change the following field)
Your first name.
Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
Der Inhalt dieses Feldes wird öffentlich zugänglich angezeigt, aber als nofollow markiert.
Hinweis

Kommentare beleben den Blog! Ich freue mich über jeden Kommentar. Du kannst hier offen Deine Meinung zum Artikel sagen, aber bitte beachte die Netiquette und vermeide es andere zu beleidigen.

Bitte unterlasst es die Kommentare zu SEO-Zwecken zu missbrauchen. Kommentare mit Links, die nicht zu Blogs führen (oder zu Blogs mit Grauzonen-Themen) und/oder Keywords als Namen verwenden und/oder Links im Kommentarbereich enthalten, sind nicht erwünscht!

Möchtest Du mir einen Blog-Artikel schmackhaft machen, dann schreib die URL ohne Link-Tag und ohne http(s):// in den Kommentarbereich und ich werde diesen bei Gefallen verlinken.

Die ersten vier Kommentare (mit den gleichen Daten bei Name, E-Mail und Blog) landen vor der Veröffentlichung in meiner Freigabe-Warteschlange und ich behalte mir das Recht vor, Kommentare entsprechend dieser Regeln anzupassen oder zu löschen!

t3n Magazin - Jetzt im Abo bestellen