Skip to content

Wrapping oder, wie man aus statischen Seiten dynamische macht…

wrapped up

Szenario

  • Man hat eine Menge von statischen Seiten.
  • Man möchte allen diesen Seiten eine bestimmte Eigenschaft oder eine bestimmte Fähigkeit geben.
  • Man möchte nicht jede Seite von Hand ändern. Vielleicht nimmt man solche Änderungen auch öfter vor, dann wäre das sehr aufwendig.

Lösung 1: Includes

Für bestimmte Sachen kann man Includes verwenden, das sind Textstücke, die an beliebiger Stelle im Quellcode platziert werden können.

Genauer gesagt funktionieren Includes so: Man hat in einer Textdatei einen html-Schnippsel. Z.B. könnte man alle links für das Einbinden von Stylsheets so sammeln. Wenn man dann mal ein neues Stylesheet verwenden möchte, dann verändern man die Textdatei entsprechend. Anschließend kann man automatisch in allen Seiten, die diese Textdatei einbinden, den Text ersetzen lassen. Der HTML-Editor, den ich verwende – phase5 – kann sowas z.B.. Näheres erfährt man in der FAQ oder im Forum zu phase5.

Allerdings muss man diese Includes, die Textdateien, in der html-Seite angeben, referenzieren. Also müsste man doch alle Quelldateien entsprechend ändern.

Was aber, wenn man die Änderungen an verschiedenen Stellen im Quellcode anbringen möchte und dies sich evtl. häufiger ändert. Wenn es also unpraktisch ist Includes zu verwenden?

Lösung 2: .htaccess-wrapping

Man kann mit Hilfe der .htaccess-Datei html-Seiten, bevor sie zum anfragenden Client geschickt werden, erst durch ein Skript schicken.

Diese Methode wird in HTACCESS Wrappers with PHP beschrieben. Ich möchte diese Vorgehensweise hier kurz zusammefassen und erweitern…

Änderungen in .htaccess

In die .htaccess im WebRoot fügt man folgende Zeilen ein:

AddHandler wrapper .htm 
AddHandler wrapper .html

Action wrapper /wrapper.php

Dies veranlasst den Server alle Anfragen nach einer html- oder htm-Seite an das Skript wrapper.php im WebRoot zu schicken.

Das Skript – wrapper.php

Ich möchte hier kein konkretes, lauffähiges Skript herschreiben – ich hab auch noch nichts entsprechendes programmiert. Nur die Idee skizzieren.

Über $_SERVER["PATH_TRANSLATED"]; gelangt man an die ursprünglich angeforderte Datei – mit einer Pfadangabe relativ zum ServerRoot.

Jetzt könnte man diese Datei einlesen und an gegebener Stelle Änderungen vornehmen. Alles, was mit Includes geht, geht auch mit einem solchen Wrapper.

Der Wrapper ist aber weit mächtiger. Man könnte z.B. das CharacterEncoding ändern und das html entsprechend abändern.

Geocities verwendet einen solchen Wrapper beispielsweise um auf jeder Seite, die bei ihnen gehostet wird, ein Werbebanner einzublenden.

Mit einem Caching-Mechanismus könnte man das unnötige Abarbeiten des Wrappers – wenn also die Seite schonmal angefordert wurde, und nichts Neues durch den Wrapper hinzugekommen ist – verhindern und wäre mit dem Ausliefern der generierten html-Seite wieder praktisch genauso schnell wie mit der statischen Seite.

Ich finde diese Möglichkeit ziemlich cool – auch wenn ich sie wohl in nächster Zeit nicht einsetzen werde…

Post a Comment

Your email is never published nor shared. Required fields are marked *