Tipps für Selbermacher
Frameumleitung — ein Behelf
Warum Sie Frames nicht verwenden sollten, habe ich im Artikel über Framesets erklärt. Wenn Sie aber auf Frames nicht verzichten wollen, sollten Sie zumindest Ihre Einzelseiten per Javascript auf das gesamte Frameset umleiten.
Dadurch erreichen Sie, dass zumindest diejenigen Ihrer Besucher, die etwa über Suchdienste auf einer Ihrer Einzelseiten gelandet sind und Javascript aktiviert haben, trotzdem die gesamte Seitenstruktur innerhalb aller Frames zu Gesicht bekommen.
Hier erfahren Sie, wie Sie das umsetzen können. Bauen Sie in den Kopfbereich Ihrer Quelltexte ein script ein, das feststellt, ob die Seite für sich alleine im Fenster steht, und in diesem Fall auf das komplette Frameset umleitet. Eine mögliche Variante eines solchen scripts wäre:
<head>
<script TYPE="text/javascript">
<!--
if ( top == self )
top.location.href = "frameset.html";
//-->
</script>
</head>
Damit verhindern Sie zwar in vielen Fällen, dass Einzelseiten ohne ihr Framegerüst angezeigt werden, erzeugen aber das Problem, dass Ihr Besucher nicht auf der Seite landet, die er sehen wollte. Anstelle der angesurften Seite erreicht er diejenige, die im Frameset als Inhalt definiert wird. Er muss sich dann über Ihr Menü bis zu den ihn interessierenden Inhalten durchkämpfen. Oder er lässt es und verlässt Sie.
Weiche zu den einzelnen Inhaltsseiten
Wenn Ihr Internethost Server Side Includes (SSI) zulässt, gibt es eine einfache Möglichkeit, Ihre Besucher von Einzelseiten umzuleiten, Ihnen aber trotzdem die angesurften Seiten direkt anzuzeigen – innerhalb Ihrer Frames! Ergänzen Sie dazu den bereits oben begonnenen scriptcode in ihrer Datei »dieseseite.html« wie folgt:
<head>
<script type="text/javascript">
<!--
if ( top == self )
top.location.href = "frameset.html?dieseseite.html";
//-->
</script>
</head>
Damit »dieseseite.html« dann auch nach Umleitung auf das Frameset angezeigt wird, müssen Sie in »frameset.html« den entsprechenden Frame richtig bedienen.
<frameset rows="100,*">
<frame src="header.html">
<frameset cols="150,*">
<frame src="menu.html">
<!--#if expr="$QUERY_STRING" -->
<frame name="inhalt"
src="<!--#echo var="QUERY_STRING" -->">
<!--#else -->
<frame name="inhalt" src="start.html">
<!--#endif -->
</frameset>
</frameste>
Das sieht komplizierter aus, als es ist. Die hervorgehobenen Zeilen mit SSI-Code bewirken, dass die Datei »frameset.html« auf dem Server neu erzeugt wird. Je nachdem, ob ein Dateiname für den Frameinhalt beim Aufruf der Seite angehängt war, wird entweder die genannte Inhaltsseite, oder aber eine Standardseite in den Frame namens »inhalt« geladen.
Ergänzung zur SSI-Technik
Damit die Umsetzung auf dem Server funktioniert, muss »frameset.html« entweder in »frameset.shtml« umbenannt, oder dafür gesorgt werden, dass »frameset.html« auf dem Server nach SSI überprüft wird. Das erzwingt man durch die Zeile
XBitHack on
in einer Datei namens ».htaccess« im gleichen Serververzeichnis wie »frameset.html«. Danach muss das Execution Bit für »frameset.html« gesetzt werden. Dies geschieht durch das Ausführen des Befehls
chmod +x frameset.html
auf dem Serververzeichnis. (Sehr wahrscheinlich verfügt Ihre FTP-Software über einen speziellen Menübefehl zum Setzen der Execution Bits.)
Nachsatz
Natürlich kann man Umleitungen viel eleganter mit anderen scriptsprachen realisieren, die auf verschiedenen Serverumgebungen zur Verfügung stehen. Als CGI-basierte Lösung oder PHP-Script wäre der Effekt einfacher und komfortabler zu erzielen. Ich habe mich auf dieser Seite für die Präsentation einer SSI-Variante entschieden, weil vielen privaten Homepage-Selbermachern die Server Side Includes – im Vergleich zu CGI oder PHP – am häufigsten zur Verfügung stehen.




