|
ulf-wendel.de   
|
|
 Home < PHP Projekte  < Menu 3  < Browser    |       |  
Print Version    
---
|
|
 Home 
 PHP Projekte 
    PHPDoc 
    Forms 
    IT[X] Template 
    Userland Cache 
    Gtext 
    Menu 3 
       Tutorial 
       Browser 
       XML/XSLT Menü 
    Columbo 
 PHP Schulung 
 Technik der Site 
 Büchertipps 
 Fotografie 
 Airbrush 
 Kontakt 
 Stuff 

Ordnung im Sicherungskasten

Ein gewöhnlicher Tag im Büro: Isotopp und Azundris sind kurz davor auseinandergesetzt zu werden, weil die Belegschaft Angst vor den kreischenden ewig Jungen hat und mittendrin, unbeeindruckt vom Lärm und dem Kampf um die Schublade mit den Süßigkeiten, arbeitet Matthias mit Menu 3.

Wie ich es von Matthias nicht anders gewohnt bin, erkenne ich meinen Code kaum wieder. Die Basis gefiel ihm zwar, doch die Speicherung der Daten eines Menüpunkts (Node) im Strukturhash (Baum) war ihm zu unübersichtlich und wie vom menu.inc Original aus der PHPLib gewohnt, hatte er zwei Hashes angelegt. Eines mit der Struktur und eines mit den Daten der Menüpunkte (url, titel, [sub]).

Das ML Menu, wie es jetzt hieß, war übersichtlicher als das meine, aber Matthias, Du konntest ja noch nicht ahnen was können würde: die Ordnung im Sicherungskasten. Natürlich ist der große Hash übersichtlich, weshalb niemand diesen manuell aufbauen möchte. Doch die Aufgabe läßt sich abwälzen. Ein kleiner Browser generiert aus der Verzeichnisstruktur im Filesystem den Menühash.

Verzeichnisstrukur gleich Menüstruktur

Bei der Betrachtung von Webpräsentationen fällt auf, das oft die Verzeichnisstruktur auf der Festplatte identisch ist mit der Struktur der Navigationsleiste. Die Einhaltung dieser Strukturgleichheit ist gleichermaßen für den Internetnutzer und den Autor der Website von Vorteil. Der Autor ist es gewohnt, zusammengehörenden Content in Ordnern (Verzeichnissen) zu gruppieren und der Internetnutzer kann aufgrund der klaren Struktur bereits an der URL erkennen wo er sich befindet. Das vereinfacht nicht nur die Bewertung von unkommentierten Bookmarks bei denen nur die URL bekannt ist, es erlaubt den "Profinutzer" gar URLs zu raten, wenn die normale Navigation einmal versagen sollte.

Alle für die Funktion von Menu (3) notwendigen Daten kann der Browser aus der Verzeichnisstruktur gewinnen: die URL und etwaige Unterpunkte. Es ist hingegen kaum möglich, einen sinnvollen Titel für den Menüpunkt zu finden. Der Dateiname ist nicht immer aussagekräftig ("n300.html"). Es bietet sich an, die Information in der Datei selbst zu kodieren, was sowohl bei HTML aber insbesonders bei XML Dokumenten leicht gelingt.

Wie wird die Struktur aufgebaut?

Der Browser durchsucht ein Verzeichnis und alle darin enthaltenen Unterverzeichnisse. Meist startet die Suche beim Document Root Verzeichnis des Webservers. Alle Dateien werden auf Übereinstimmung mit einer bestimmten Dateiendung geprüft und sofern diese vorliegt, wird die Datei in den Menühash übernommen. Trifft der Browser aus ein Unterverzeichnis, so wird dieses nur dann durchsucht, wenn es eine Index Datei enthält, dies verhindert, daß Verzeichnisse ohne Content Seiten übernommen werden.

Struktur aufbauen
  • images/
    • email.gif
    • portrait.gif
    • home.gif
  • index.xml
  • kontakt.xml
  • sitemap.xml
  • projekte/
    • Forms
    • Menu
      • index.xml
      • browser.xml
      • tutorial.xml
    • PHPDoc
  • Home
  • Kontakt
  • Sitemap
  • PHP-Projekte
    • Forms
    • Menu
      • Browser
      • Tutorial

Im Beispiel wird links eine Verzeichnisstruktur und rechts die resultierende Navigationsstruktur dargestellt. Die Anordnung der Menueinträge ist nicht immer optimal, da sie alpabetisch sortiert ist nach den Namen der Verzeichnisse, die Content Seiten enthalten, aber die Übung hier eine Umsortierung zu schaffen ist nicht mit fünf Sternen versehen.

Content Seite

Die im PEAR CVS befindliche Version des Browsers geht davon aus, das der Content in einfachen XML Dateien organisiert ist.

<exampleweb>
  <menu>Startseite (title eines Nodes)</menu>
  ...
</exampleweb>
Enthalten ist neben dem eigentlichen Content auch eine Information für den Menühash, der Titel des Menüeintrags. Natürlich ist auch jede andere Codierung für Menüdaten erlaubt. Hierzu muß die Methode exploreFile() überschrieben werden.

Strom an!

Menu (3) läßt sich sehr leicht mit dem Browser verknüpfen.
Strom an! Top

<?php
// Dateien einbinden
require_once("Menu_Browser.php");
require_once(
"Menu.php");

// Verzeichnis in dem der Content liegt - meist Document Root
define("DOC_ROOT""./");

$browser = new menubrowser(DOC_ROOT);
$m = new menu;

// Menu (3) füttern
$m->menu($browser->getMenu());

// Sitemap ausgeben
$m->show("sitemap");
?>      
      

Mit etwas Userland Cache, einem XML Parser und etwas XSLT oder einem grep und den IT[X] Templates, wie es auf dieser Homepage verwendet wird, können sie sich ihre eigene Fusebox bauen.

<  ^  >

 Neues

 XML/XSLT Menu
 OOH-Form Rewrite

 PEAR Cache:
  SHM Container

 Suchstring Parser
 Buchrezensionen
 PEAR Cache:
  OutputCompression

 PEAR Menu Browser
 PEAR Menu Tutorial 
 PEAR Cache


 Tipp

Download Version:
oben rechts,
Download *.tar.gz
|
| --- |
|
  Top   |   <  ^  >   |   phpOpenTracker Statistik   |   URL: http://www.ulf-wendel.de/projekte/menu/browser.php   |   Stand: 22.03.2001   |   © Ulf Wendel   
|
| --- |

0.013 s Bearbeitungszeit, 0.002 s IT[X], 0.002 s Menu 3