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:
- Funktioniert mit standard HTML
- TUD-Layout mit CSS2 oder Tabellen für Browser die CSS nicht beherschen.
- Automatisch geschachtelte Menustrukturen zur Navigation
- PHP-Skripte können mit geringen anpassungsaufwand (globale Variablen) verwendet werden.
- Browsererkennung für maximale Lesbarkeit
- Layout zentral einstellbar (bei Bedarf wäre dies auch per Cookie möglich)
Nachteile:
- höherer Aufwand durch "on the fly" ersetzung macht einsatz für Seiten mit sehr hohem Traffic anspruchsvoll
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:
- die Metatags werden ausgeschnitten
- die Titelzeile wird ausgeschnitten und am Bindestrich in Überschrift und Bereichsüberschrift des TUDLayouts getrennt
- das Body-Element direkt bei der Ausgabe ausgeschnitten
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.