phpbar.de logo

Mailinglisten-Archive

[php] Site Navigation

[php] Site Navigation

=?iso-8859-1?Q?Bj=F6rn_Schotte?= bjoern_(at)_baer.mayn.de
Tue, 13 Jul 1999 11:10:41 +0200


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