Menu UI verbessern


Problematik: Das Menusystem ist unvollkommen, bzw. diverse Module müssen eingesetzt und an verschiedenen Stellen konfiguriert werden, um die gewünschte Funktionalität zu erreichen. Im Konkreten bereiten folgende Usecases Probleme:

  • Views mit Argumenten als Toplevel URL. Z.B: www.bsp.ch/politik und www.bsp.ch/leute. Dafür müssen zwei Views angelegt werden, obwohl 1 Views mit Taxonomy Argumenten vollkommen ausreichend wäre.
  • Welcher-Menu-Punkt-ist-aktive-Problematik. Über das Modul "Menu Trails" ist das grundsätzlich möglich, setzt jedoch voraus, dass eine gewisse Struktur vorhanden ist (z.B. die Taxonomy): Führt dazu, dass jedoch Menu und Taxonomy doppelt gepflegt werden.

Grundsätzlich: Das Menusystem dient als zentrales Element um die Inhalts-/ Seitenstruktur zu verwalten. Daher wird als GUI das standard Menu Interface als Ausgangslage dienen. Das folgende Mockup soll zur Illustration dienen.

[not available anymore]

Ausser Pfad und Titel sind alle Angaben optional. Im folgenden werden die optionalen Elemente kurz erläutert:

Views: Es kann eine Views gewählt werden, welche unter dem gewählten Pfad ausgegeben wird. Je nach Views können entsprechende Argumente gewählt werden. Damit kann z.B. unter dem Pfad "leben" und unter dem Pfad "people" die gleiche Views (jedoch mit unterschiedlichen Argumenten) eingesetzt werden. Über hook_menu_alter wird dies durchgeführt.

Key/Value: Das Standardverhalten kann übersteuert werden. Ein klassischer Fall wäre eine eigene Callback Function. Dafür wird als Key "Callback" eingegeben und der Value ist z.B. hallowelt(1, "Weri"). Über hook_menu_alter, wird hier der entsprechende Eintrag gesetzt. Weitere Mögliche Anwendung wäre das mitgeben von globalen Parameter (z.B. die Seitenfarbe, Menu Icon usw.). Wie das genau in der Praxis eingesetzt wird muss sich noch zeigen.

Taxonomy: Standardmässig wird ein Taxonomyeintrag gemacht. Das Vokabular heisst gleich wie das Menu. Jeder Menupunkt entspricht einem Term. Zusätzlich wird die Termid und die Menu Id verknüpft, so dass die Verbindung eindeutig vorhanden ist. Ein Node kann dann einem Term hinzugefügt werden. Grund dahinter: Sicherstellen, dass der richtige Menupunkt aktiv ist, wenn ein Node betrachtet wird.