Das Menüsystem von Drupal
Das Menüsystem von Drupal war immer mehr als der Name vermuten lässt. Es wird nicht nur dazu verwendet, sichtbare Navigationsmenüs anzuzeigen sondern dient auch dazu, Pfade von Drupal zu ihren entsprechenden Callbacks (mit Überprüfung der Zugriffsberechtigung) zuzuordnen. Diese zweite Aufgabe wird auch "dispatching" genannt (kann grob mit "verteilen" übersetzt werden). Die naheliegendste Erklärung dafür ist, sobald ein Verweis zu einer Seite definiert wird, soll auch festgelegt werden, was bei einem Klick auf diesen Verweis geschieht.
Dies führt letztendlich zu einer äusserst komplexen Datenstruktur, die als serialisiertes Array in der Datenbank gespeichert wurde — für jeden Nutzer. Dieses Array wieder bei jedem nicht-gecachtem Seitenaufruf zu deserialisieren verbraucht Unmengen an Speicher. Und das Verändern der Struktur bei der Erstellung oder zur Laufzeit erfordert ziemlich üble Hacks.
Einige Missverständnisse über die Zugriffsrechte von Elementen und wie diese sich auf deren Kindelemente auswirken führten zu schwerwiegenden Sicherheitslöchern in einigen Modulen.
Dies erhöhte die Notwendigkeit von gut durchdachten, klar definierten Richtlinien zur Vererbung.
In Drupal 6.x haben wir ein komplett neues Menüsystem. Die Daten sind auf zwei Tabellen aufgeteilt: {menu_router} und {menu_links}. Die Tabelle {menu_router} basiert dabei auf den Callbacks die in den Implementierungen von hook_menu definiert sind. Drupal schaut nun in diese Tabelle um die Zugriffsrechte und die erforderliche Callback-Funktion zu ermitteln, wenn ein Besucher versucht, einen bestimmten Pfad zu besuchen. Alles, was zu einem Pfad gehört, ist nun in einer Zeile einer Tabelle gespeichert, sodass der Speicherverbrauch um Einiges kleiner ist.
Die Vererbungsrichtlinien für Zugriffsrechte sind übersichtlich dokumentiert.
Die Tabelle {menu_links} enthält die Verweise, die in der Navigation und anderen Menüblöcken dargestellt werden. Manche dieser Verweise sind automatisch von {menu_router} abgeleitet, andere jedoch können durch den Administrator über das Menü-Modul oder durch andere Module hinzugefügt sein.
- Anmelden oder Registrieren um Kommentare zu schreiben
Neue Kommentare
vor 1 Tag 13 Stunden
vor 3 Tagen 8 Stunden
vor 3 Tagen 9 Stunden
vor 3 Tagen 13 Stunden
vor 3 Tagen 20 Stunden
vor 5 Tagen 9 Stunden
vor 6 Tagen 11 Stunden
vor 6 Tagen 13 Stunden
vor 1 Woche 2 Tagen
vor 1 Woche 2 Tagen