Mailinglisten-Archive |
Hi, > Ich fände interessant zu hören, wie die Profis und Semi-Profis hier > dieses Problem gelöst haben (oder falls nicht, was Euch dazu > einfällt). Ich habe das Problem jetzt auf relativ abstrakter Ebene > beschrieben, hätte aber nichts dagegen, wenn wir etwas konkreter > würden und auch mal mit Codezeilen um uns werfen würden. 1. Ich bereite gerade einen Artikel zum Thema Windows-Explorer-artige Navigation mit beliebiger Tiefe mittels PHP3/mySQL vor. Grundlage dessen ist einfach eine klitzekleine rekursive Funktion. 2. Angenommen, du hast folgende Verzeichnisstruktur auf deinem Server: /www/htdocs/ -> Document Root faq/ faq-von-xyz/ faq-von-abc/ infos/ zum-auto/ zum-pferd/ zum-fahrrad/ (hm, ich bin unkreativ :) . . . Deine Funktion bzw. der Codeschnipsel, der dir die Navigationsleiste erzeugt, stellt dann in HTML folgendes dar: <a href="faq/">Verschiedene FAQs</a><br> <a href="infos/">Infos über diese Site</a><br> Im Browser dargestellt als z.B.: * Verschiedene FAQs # beides Anchor-Tags, also anklick- * Infos über diese Site # bar Nun möchtest du folgendes Erscheinungsbild haben, wenn der Benutzer auf "Verschiedene FAQs" klickt: * Verschiedene FAQs # nicht anklickbar! * FAQ von xyz # Anchor * FAQ von abc # Anchor * Infos über diese Site # Anchor Um das zu erreichen, muß, wie oben dargestellt, davon ausgegangen werden, daß die einzelnen Oberpunkte in einzelnen Verzeichnissen liegen (dürfte meistens der Fall sein). Dann definierst du dir ein Array: $nav=array("faq"=>array("FAQ von xyz"=>"faq-von-xyz/", "FAQ von abc"=>"fax-von-abc/"), "infos"=>array("Infos zum Auto"=>"zum-auto/", "Infos zum Pferd"=>"zum-pferd/") ); Nun klapperst du in deiner Funktion dieses dreidimensionale Array ab. Du merkst dir das aktuelle Verzeichnis, in dem du gerade bist, und machst folgende Überprüfung: if ($nav[$aktuelles_verzeichnis]!="") { } Denn es könnte ja sein, daß ein Oberpunkt gar keine Unterpunkte hat (z.B. "Impressum"). Aus diesem Grund hast du dann in deinem Array einfach ein "impressum"=>"". Da du im Array $nav ja deine komplette Navigationsstruktur nun hast, kannst du es einfach von oben nach unten durchgehen, und dir so deine Navigationsleiste zusammenbauen, also in einer For-Schleife. Du mußt dann nur noch überprüfen, ob die aktuelle Position des Arrays, an der du mit deinem Durchlauf der Schleife momentan bist, mit dem aktuellen Verzeichnis übereinstimmt und ob es Unterpunkte gibt (siehe if-Abfrage weiteroben), und dann gegebenenfalls eine Tiefe reinspringen. Das ist die einfachste Methode (IMHO) für eine Navigation mit zwei Tiefen. Ich hoffe, daß ich dir etwas weiterhelfen konnte. :) Björn.
php::bar PHP Wiki - Listenarchive