Anleitungen zum Barrierefreien Webdesign - © 2004

| Start | WEBlog | Terminkalender | Projektseite | Admin |

SCHRANKENLOS.CH - KONZEPT

Datenbank

Grundidee

Für das Projekt "Schrankenlos" sind eine Vielzahl von Datenseiten erforderlich, wir rechnen mit ca. 60 Seiten. Etliche Teile dieser Seiten wären identisch, z.B. die Navigation, der Seitenkopf, usw. Bei jeder Änderung in diesen Teilen müssten somit alle 60 Seiten abgeändert werden, was doch sehr mühsam wäre. Deshalb kam die Idee auf, diese Seiten aus einer Datenbank zu erzeugen. Es gäbe dann nur noch eine Seite, bestehend aus dem HTML-Gerüst mit dem Aufruf der im externen CSS-File definierten Ebenen und dem darin eingefügten PHP-Code, der den notwendigen Text aus der Datenbank holt und ins HTML-Gerüst einfügt.

Lösung

Die Datenbank wurde mit MySQL realisiert. Die Seiten werden mit einer dreistelligen Zahl gekennzeichnet (siehe nächstes Kapitel). Für jede Seite können die folgenden sechs Felder erfasst werden:

  • Linktext: Text des Links für diese Seite, so wie er in der Navigation verwendet wird
  • Linkzusatz: Verlängerter Linktext für die Angabe, wo man sich gerade befindet ("Brotkrumen") und für die Verwendung im Verzeichnis (ist dieses Feld leer, so wird der Inhalt vom Feld Linktext genommen)
  • Titel: Titel der Seite (für das Title-Tag)
  • Ueberschrift: Überschrift der Seite (für das erste h1-Tag)
  • Einführung: Beschreibung der Seite für das Verzeichnis
  • Text: Inhalt der Seite mit allen notwendigen HTML-Tags

Für die Ausgabe und für die Mutationen in der Datenbank gibt es die folgenden drei PHP-Programme:

  • das Programm "inhalte.php", welches die Seiten aus der Datenbank erstellt und sie ausgibt
  • das Programm für das Erstellen des Verzeichnisses aller Seiten (Sitemap)
  • das Admin-Tool für das Erfassen der Seiten und für deren Änderung.

Nummerierung der Seiten

Die Seiten des Projektes "Schrankenlos" umfassen drei Navigationsstufen:

  • die Hauptnavigation
  • die erste Unternavigation
  • die zweite Unternavigation

Jede Navigationsstufe umfasst maximal neun Elemente. Jede vorgesehene Seite kann so mit einer dreistelligen Zahl bezeichnet werden:

  • Die Startseite hat die Nummer 000
  • Auf der Startseite gibt es eine Navigation erster Stufe mit den Links für die Seiten 100, 200, 300,....
  • Auf der Seite 100 gibt es zusätzlich eine Navigation zweiter Stufe mit den Links für die Seiten 110, 120, 130,....
  • Auf der Seite 110 gibt es zusätzlich eine Navigation dritter Stufe mit den Links für die Seiten 111, 112, 113,....
  • Auf der Seite 200 gibt es eine Navigation zweiter Stufe mit den Links für die Seiten 210, 220, 230,....
  • Auf der Seite 120 gibt es eine Navigation dritter Stufe mit den Links für die Seiten 121, 122, 123,....
  • usw.

Aufruf der Seiten

Die Seiten werden aufgerufen, indem die Nummern der drei Navigationsstufen an die IP-Adresse angehängt werden (GET-Methode), also für die Seite mit der Nummer 230 etwa so:

http://www.schrankenlos.ch/inhalte.php?stufe1=2&stufe2=3&stufe3=0

Derartige Adressen können jedoch Probleme bei der Auswertung durch Suchmaschinen ergeben, die vielfach der Text nach den "?" ignorieren. Deshalb werden die Zeichen "?", "=" und "&" durch Schrägstriche ersetzt:

http://www.schrankenlos.ch/inhalte.php/stufe1/2/stufe2/3/stufe3/0

Eine solche Adresse wird von einer Suchmaschine wohl akzeptiert. Sicherheitshalber wurden die Ziffern zwischen Schrägstrichen noch durch vorangestellte "x", "y" und "z" ergänzt:

http://www.schrankenlos.ch/inhalte.php/stufe1/x2/stufe2/y3/stufe3/z0

Jetzt stellt sich das Problem, dass die Seite mit einer solchen Adresse nicht real existiert. Da hilft ein Trick weiter, der bei

http://www.alistapart.com/articles/succeed/

beschrieben ist. Er besteht im wesentlichen darin, dass ein spezieller Ordner mit einem htaccess-File geschaffen wird. Dieser Ordner heisst in diesem Projekt "datenbank". Das htaccess-File in diesem Ordner enthält folgendes:

RewriteEngine
onRewriteRule !\.(gif|jpg|png|css)$ /home/zenzeroch/public_html/schrankenlos/datenbank/inhalte.php

Vor jedem Aufruf eines Files in diesem Ordner wird zuerst die Instruktion des htaccess-Files befolgt. Die erste Zeile bewirkt, dass im Apache-Server die "Rewrite-Engine" aktiviert. wird. Die zweite Zeile besagt: "Wenn die Bedingung wahr ist, so lade immer das File inhalte.php, unbhängig von der angegebenen Adresse". Die Bedingung ist ein regulärer Ausdruck, der sich auf den Filenamen bezieht. Das Zeichen "$" bezeichnet den Schluss des Filenamens, der Punkt am Anfang bezeichnet einen Punkt im Filenamen. Anschliessend kann einer der in der Klammer angegebenen Texte folgen. Ganz am Anfang des regulären Ausdrucks steht ein "!", was für "nicht" steht. Der Ausdruck ist also wahr, wenn der Filename nicht vom Typ gif, jpg, png oder css ist. Alle anderen Files werden somit zum File "inhalte.php" umgelenkt. Das gilt also insbesondere für Filenamen wie

http://www.schrankenlos.ch/datenbank/inhalte.php/stufe1/x2/stufe2/y3/stufe3/z0

Solche Filenamen bewirken den Aufruf von

http://www.schrankenlos.ch/datenbank/inhalte.php

Das Programm "inhalte.php" holt sich zuerst die ganze Adresse mit

$url = $_SERVER['REQUEST_URI'];

und extrahiert daraus die drei Stufennummern. Mit diesen Nummern sucht das Programm in der Datenbank die sechs für diese Seite gespeicherten Felder und generiert daraus die Seite.

Seitenaufbau

In den folgenden Ebenen auf einer Datenseite des Projektes "Schrankenlos" werden Informationen aus der Datenbank eingefügt:

  • breadcrumb: Angabe des Ortes, wo man sich gerade befindet ("Sie befinden sich hier"). Die einzelnen Elemente sind anklickbar
  • menu: Hauptnavigation (oben auf der Seite)
  • submenu1: Erste Unternavigation (links auf der Seite)
  • submenu2: Zweite Unternavigation (oben im weissen Bereich)
  • content: Inhalt (zuerst kommt die Ueberschrift und dann der Seiteinhalt aus dem Feld "text")

Hinzu kommt noch der Seitentitel, der ins title-Tag eingefügt wird.

Spezialfälle

Da alle notwendigen HTML-Tags im Textfeld mit erfasst werden, kann das in gewissen Fällen zu Schwierigkeiten führen. Die Steuerzeichen werden bereits bei der Erfassung interpretiert.

Für den Fall von Code-Beispielen wurde die folgende Lösung getroffen:

Diese Beispiele werden bei der Erfassung in geschweifte Klammern eingeschlossen, also z.B.

{img src="home.gif" alt="Startseite"}

Vor der Ausgabe werden diese Klammern vom Programm inhalte.php in "<" bzw. ">" umgewandelt:

<img src="home.gif" alt="Startseite">

Und dies wird wie folgt angezeigt:

<img src="home.gif" alt="Startseite">

Ebenso kann es Probleme geben bei den Sonderzeichen, die mit "&" eingeleitet werden. Gibt man ein "&ouml;" ein, so wird dies bereits während der Verarbeitung im Admin-Tool zu einem "ö" umgewandelt und dann auch so gespeichert. Deshalb wandelt das Admin-Tool alle &-Zeichen in @-Zeichen um. Ein "&ouml;" wird deshalb in der Datenbank als "@ouml;" gespeichert. Das Programm inhalte.php nimmt vor der Ausgabe die Rückumwandlung vor.

Die einfachen Anführungszeichen (') werden vom Admin-Tool zur Kennzeichnung der Strings für die MySQL-Parameter verwendet. Deshalb stören solchen Zeichen im Text. Sie werden deshalb vom Admin-Tool in £-Zeichen verwandelt. Das Programm inhalte.php nimmt vor der Ausgabe die Rückumwandlung vor.

| nach oben | zurück |