Mailinglisten-Archive |
Marian Steinbach wrote: > Richtiger Menüzustand heißt natürlich für jeden etwas anderes, für > mich heißt es minimal folgendes (halte ich übrigens auch für > diskutabel und ergänzbar): > - Alle Brüder/Schwestern einer Seite sind zu sehen (d.h. alles auf > derselben ebene im selben Bereich/Verzeichnis) > - Die aktuelle Seite taucht auch im Menü auf, ist jedoch nicht > verlinkt. > - ggf. ein up-Link zum nächst höheren Verzeichnis > - und falls nicht identisch mit vorigem ein home-Link zur > Startseite. Wenn man eine Semantik haben möchte, die ungefähr dem entspricht, was ein Filemanager macht, dann braucht man folgende Definitionen, die fast so sind, wie in Deinem Beispiel: 1. Die Menüs stellen einen Baum dar Wurzel +---+ + +----+ | | | a b c +-+-+ +-+-+ +-+-+ | | | | | | | | | aaabac babbbc cacbcc 2. Zu jedem gegebenen Zeitpunkt kann der angewählte Menüpunkt durch einen Pfad identifiziert werden: /, /a, /a/ab oder /c/cc und so weiter. 3. Die Menüdarstellung soll zum aktuellen Pfad passende Auswahl anbieten, d.h. für alle Pfadkomponenten werden die Menüpunkte derselben Ebene und alle Menüpunkte der Ebene, die der aktuellen Pfadkomponente untergeordnet sind angezeigt. Beispiele: / (keine Auswahl) Es werden alle Komponenten der aktuellen Ebene / angezeigt, also / selbst. Es werden alle / unmittelbar untergeordneten Komponenten angezeigt, also /a, /b und /c. /a Komponente / wie oben behandeln und zusätzlich: /a -> es werden /a, /b und /c angezeigt, -> es werden /a/aa, /a/ab und /a/ac angezeigt. /a/ab Komponente / wie oben behandeln und Komponente /a wie oben behandeln und /a/ab -> es werden /a/aa, /a/ab und /a/ac angezeigt, -> es werden die /a/ab untergeordneten Komponenten angezeigt. Wie man sieht, ist dies leicht durch eine rekursive Funktion zu implementieren. Die Funktion, die die Navigation aufbaut, kann auf der Basis von $PHP_SELF leicht herausfinden, wie sie selber heißt und in einer Datenbank von Menüstrukturen die passenden Menüpunkte finden und aktivieren. Kristian -- Kristian Köhntopp, NetUSE Kommunikationstechnologie GmbH Siemenswall, D-24107 Kiel, Germany, +49 431 386 436 00 Using PHP3? See our web development library at http://phplib.shonline.de/ (GPL)
php::bar PHP Wiki - Listenarchive