Starre HTML-Seiten haben oftmals die Angewohnheit den Webmaster bei Änderungen
ziemlich ins Schwitzen zu bringen, denn diese können sich auf eine große Anzahl
einzelner Seiten auswirken, wenn man z.B. auf jeder Seite ein Navigationsmenü
angebracht hat und dieses nun ändern möchte. Abhilfe würden in einem solchen
Fall z.B. Frames schaffen, die jedoch wiederum andere Nachteile mit sich bringen.
So ist es mit Frames nicht möglich ohne Javascript den Inhalt eines Frames über
ein Navigationsframe zu steuern.
Die Seiten des alten zerbit.de-Webs enthielten keinerlei Frames oder Javascripte.
Jede einzelne wurde über ASP aus mehreren "Modulen" auf dem Server "zusammengebaut".
So gabt es einen Header, die Navigationsleiste links, die News-Leiste rechts
und die Fußzeile, die jeweils von einer ASP- bzw. HTML-Seite repräsentiert wurden.
Ausgangspunkt ist der Seitenentwurf, der aus einer Tabellenstruktur besteht,
die aus 5 Grundzellen besteht. In jeder dieser Zellen steckt eine weitere Tabelle,
die den jeweiligen Inhalt enthält.
Steht das gewünschte Layout, wird die Inhaltstabelle der vier Rahmenzellen
in separate Dateien ausgelagert, wobei darauf zu achten ist, dass in diesen
HTML- oder ASP-Dateien keine HTML-, HEAD- oder BODY-Tags enthalten sind. An
die Stelle der Tabellen im Hauptdokument wird eine INCLUDE-Anweisung gestellt,
die den Inhalt der Datei während des Zugriffs wieder einsteuert:
<!--#include virtual="/header.asp" //-->
Diese SSI-Anweisung kann entweder mit dem Parameter virtual
oder file versehen werden, wobei bei
file der Pfad entweder relativ von der aktuellen Datei
aus gesehen wird oder eine absolute Pfadangabe enthält (z.B. "c:\inetpub\wwwroot\header.asp").
Bei virtual muss ein virtueller Pfad zur Datei angegeben
werden (z.B." /header.asp").
Problematisch ist die INCLUDE-Anweisung jedoch, wenn z.B. der anzuzeigende
Inhalt auch aus einer externen Datei kommen und einer ASP-Seite als Parameter
übergeben werden soll. Hier funktioniert das Prinzip nicht, denn INCLUDE-Anweisungen
werden vom Server immer als erstes abgearbeitet, d.h. bevor der Parameter mit
Request.QueryString abgerufen werden kann. Daraus ergibt sich, dass bei INCLUDES
nicht mit Variablen gearbeitet werden kann.
Abhilfe schafft hier eine ASP-Anweisung:
Server.Execute(strPage)
Diese Anweisung dient normalerweise dazu ein externes Script auszuführen,
das Ergebnis anzuzeigen und danach zur aufrufende Seite zurückzukehren. In unserem
Fall stellt der komplette Inhalt der einzusteuernden Seite das Ergebnis dar,
wobei alle darin enthaltenen Scripte zu Zeitpunkt des Einsteuerns ausgeführt
werden.
Die Anweisung akzeptiert allerdings nur Dateien, die auf dem gleichen Webserver
liegen und die über virtuelle Pfadangaben erreichbar sind. Absolute Pfade wie
c:\inetpub\wwwroot\xyz funktionieren nicht.