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
|
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.
< ^ >
|