Neben den Nachteilen, die das Frame-Konzept hat, gab es wenigstens den Vorteil, daß man mit einer Datei für das Menü der Webseite auskommen kann, wenn man mal den Schönheitsfehler außen vor läßt, daß man nicht auf die aktuelle Seite verlinken soll. Die übrigen Nachteile lassen sich zum Teil dadurch ausgleichen, daß man zum einen die Navigation nochmal in den Noframes-Bereich des Framesets übernimmt, wodurch die Seite auch für Besucher benutzbar ist, deren Brauser keine Frames beherrscht. Zum anderen kann man für jede Themenseite ein eigenes Frameset mit passender Navigationsdatei anlegen, das die Besucher dann auch bookmarken können. Aber das macht deutlich mehr Arbeit, weil bei Erweiterungen der Seite die Navigation in vielen Dateien einzeln angepaßt werden muß.
Um Abhilfe zu schaffen, aber die Aufteilung in verschiedene Dateien zu erhalten, bin ich auf PHP umgestiegen. Aus dem Frameset ist jetzt sinngemäß die index.php, stw.php usw. geworden, die den Grundaufbau (Kopf- und Fußbereich) enthält und die über URL-Parameter gesteuert die jeweilige Inhaltsdatei nachlädt. Zur Ausgabe der Navigation wird außerdem eine indexn.php, stwn.php usw. nachgeladen. Die möglichen URL-Parameter und andere Variablen zur Steuerung der Navigations- und Inhaltsausgabe sind jeweils in einer indexv.php, stwv.php usw. abgelegt, in der die URL-Parameter auf vorgesehen Werte überprüft werden und die ebenfalls in der index.php usw. als erste, noch vor den anderen Dateien nachgeladen wird. Für seitenspezifisches CSS zu den Inhaltsseiten gibt es außerdem eine indexc.php, stwc.php usw. Die eigentlichen Inhaltsdateien enthalten außer einer Zeile, die verhindert, daß sie alleine aufgerufen werden können, nur noch den auszugebenden Text. Durch diese Aufteilung bleibt das auch ohne CMS relativ übersichtlich.
Um das alles testen zu können, bevor es auf den Webserver des Hosters hochgeladen wird, habe ich auf meinem Rechner einen lokalen Webserver laufen. Das ermöglicht auch Tests der Webseite mit anderen Geräten und Betriebssystemen über das LAN. Außerdem nutze ich die lokale Version des WDG-Validators, um die Seiten auf gültiges HTML zu testen. Dazu werden mit wget localhost HTML-Dateien erzeugt und per Skript automatisiert einzeln mit dem Validator getestet.
Gleichzeitig mit der oben beschriebenen Umstellung wollte ich meine Texte mit bedingten Trennstrichen ergänzen, die dem Brauser an diesen Stellen eine Silbentrennung ermöglichen. Man sehe sich mal Webseiten an, die bei einem Layout mit schmalen Textspalten auch noch Blocksatz verwenden, mich graust es da jedesmal. Zwar ist vorgesehen, daß die Brauser Silbentrennung künftig alleine beherrschen, aber bis heute können das nicht alle gängigen Programme. Firefox kann es, IE, Chrome und Safari dagegen nur mit browserspezifischem CSS, Opera anscheinend gar nicht. Probleme mit den bedingten Trennstrichen ergeben sich offenbar bei der Sprachausgabe mit Screenreadern, denn diese lesen den Text dann silbenweise vor. Das ist jedoch ein Problem der Software, die die bedingten Trennstriche zu ignorieren hätte.
Um die Trennstriche nicht manuell ergänzen zu müssen, was bei der Menge Text auch zu fehleranfällig gewesen wäre, verwende ich dafür ein PHP-Skript im Brauser. Damit wird eine Inhaltsdatei Wort für Wort durchlaufen und jedes Wort, das länger als 4 Zeichen ist, mit einer Liste bereits gespeicherter Wörter verglichen. Ist das Wort in der Liste enthalten, so wird es durch die Trennstrichversion ersetzt, wenn nicht, stoppt das Skript. Dann läßt sich das neue Wort mit Trennstrichen ergänzen und wird ebenfalls in der Liste gespeichert. Bei der Eingabe wird als Trennstrich das Zeichen | verwendet, denn das Unicode-Zeichen für den Trennstrich wäre nicht sichtbar. Für Wörter, die länger als 4 Zeichen sind, die aber nicht getrennt werden dürfen, gibt es eine Auslassungsliste. Wörter mit Schreibfehlern, die ja ebenfalls nicht in der Liste sind, können korrigiert werden und werden dann erneut gegen die Liste geprüft. Das Skript arbeitet die Datei zeilenweise ab, wobei die ersten 40 Zeichen je Zeile übersprungen werden, der Wert läßt sich anpassen. Man sollte also keine unnötigen Umbrüche (Newlines, \n) im Quelltext haben.
Eingabe der zu verarbeitenden Datei
Um Dateien, die um einen Abschnitt erweitert worden sind, nicht erneut von anfang an durchlaufen zu müssen, kann beim Start die Zeilennummer angegeben werden, ab der die Silbentrenner ergänzt werden sollen.
Zusammensetzung aus in der Liste vorhandenen Wörter erkannt
Als HTML-Editor verwende ich noch immer Bluefish 1.0.2, dessen Einstellungen zum Syntax-Highlighting ich so ergänzt habe, daß der bedingte Trennstrich farbig gekennzeichnet wird. Die aktuellen Bluefish-Versionen verwenden eine neuere GTK-Version, bei der das Unicode-Zeichen des bedingten Trennstrichs im Editor nicht mehr sichtbar ist.