SourceForge.net Logo

Project homepage http://sf.net/projects/gnyx/ Sample page http://metamod.ath.cx

GNYX - Ein Einfaches Weblayoutsystem

Trennung von Inhalt und Layout

Das Weblayoutsystem ist speziell entworfen worden um den Inhalt einer Webseite von ihrem Layout zu trennen. Der eleganteste Weg so etwas anzugehen, liegt darin die Inhalte als XML zu speichern und über entsprechende XSL an das Ausgabemedium anzupassen. Dieser Ansatz verlangt jedoch eine komplette Neugestaltung von vorhandenen HTML-Seiten und stellt für kleine und mittlere Webauftritte einen unvertretbar hohen Umstellungsaufwand mit sich. WMP erzielt durch Verwendung des "mod_redirect"-Moduls in Apache die Verzierung der Webseite "on the fly" bei Erhaltung der Verzeichnisstruktur zur Navigation.

Features: Nachteile:

Funktionsweise:

Alle Anfragen an den Webserver die ein Verzeichnis,eine *.php oder eine *.html Seite anfordern werden an das WMP-Skript weitergeleitet und das Aufrufverzeichnis wird als Umgebungsvariable übergeben. Das Skript überprüft ob eine Datei "links" in dem Verzeichnis liegt. Liegt keine Datei vor findet keine Verzierung statt. Andernfalls wird die angeforderte HTML-Seite geparst:

Im weiteren Verlauf wird eine Browsererkennung durchgeführt. Diese kann auf folgende globale Variablen einfluss nehmen: LAYOUT: Bestimmt das Layout der Seite. Standardwert ist "TUD". BROWSER: Bestimmt welcher Browserfähigkeiten vorhanden sind. Standardwert ist "css". Zur Zeit existiert ebenfalls ein "table" STYLESHEET: Bestimmt auf welches CSS Stylesheet zugegriffen werden soll.

Anhand dieser Werte wird aus dem Verzeichnis $STYLES der Dokumentbody mit dem Header $LAYOUT$BROWSERpre.php und dem Footer $LAYOUT$BROWSERpost.php ausgestattet. In den Seiten selbst kann auf folgende Variablen zugegriffen werden: $GLOBALS["METATAGS"]; Die Metatags der zugrundeliegenden Webseite $GLOBALS["TITLE"]; Der Titel der zugrundeliegenden Webseite $GLOBALS["BEREICH"]; Die Bereichsüberschrift, wird aus dem Teil vor dem Bindestrich aus TITLE extrahiert. $GLOBALS["UNTERBEREICH"]; Die Unterbereichsüberschrift, wird aus dem Teil nach dem Bindestrich aus TITLE extrahiert. gibt das Menu aus.

Die Menüs

Die Menüs werden aus einer Datei "links" die in dem gleichen Verzeichnis wie die betrachtete HTML-Seite liegt erzeugt. Die Struktur der Datei ist einfach. Jede Zeile enthält einen Menüeintrag gefolgt von einem Komma und einem relativen (!) Verweis. Die Funktion print_menu traversiert die Verzeichnisse bis zu der DOCUMENT_ROOT und gibt die Menüs entsprechend geschachtelt aus. Zur Zeit gibt es zwei Varianten dieser Funktion eine für CSS- die andere für Tabellen- basierte Seiten: print_menu und print_table_menu.

Beispiel für eine "links" Datei:

IST Index,      /
Webbrowser,     agent.php
Linkchecker,    linkchecker
indexvlsi,      Uebersicht.html
Test,   test
Übersicht, /uebersicht
Prüfungsordnungen, po

Eintrag in die Apachekonfiguration

RewriteEngine  on
RewriteCond     %{DOCUMENT_ROOT}%{REQUEST_FILENAME}     -d      [OR]
RewriteCond     %{REQUEST_URI}      .*\.php$                    [OR]
RewriteCond     %{REQUEST_URI}      .*\.html$
RewriteRule     ^(.*)   /no.php     [E=TIM_REQUEST_FILENAME:$1]

Zukünftige Erweiterungen

Es ist geplant Unterstčtzung die Stylesheetinformationen ebenfalls aus der HTML-Datei zu parsen.