Neues Frameset aufrufen, in dem jeweils eine andere Seite aufgeht.

Man merkt schon an der Überschrift, es ist schwierig in einem Satz zu beschreiben, um was es hier eigentlich geht. Ich will es mal anders ausdrücken. Ich will mit einem Link ein Frameset öffnen und außerdem in dem Link bestimmen, welche Seite sich in der zweiten Spalte des Framesets öffnen soll.

Gerade wenn man Framesets hat, die ineinander verschachtelt sind, braucht man manchmal solche Lösungen. Der primitivste Weg wäre für jede Seite auch noch ein neues Frameset zu definieren. Das ist zwar einfach, aber durch die vielen Seiten, die entstehen, wird es schnell unübersichtlich.

Lösung

Die Seite, die das Frameset definiert ist eine PHP Seite. Sie empfängt per URL Parameter den Namen der Seite, die sich in der zweiten Spalte des Framesets öffnen soll. Der Link verweist auf das Frameset und der Name der Seite wird mit einer Variablen angehängt. Siehe dazu Tipp Kommunikation HTML PHP . Als Name der Seite ist hier die Seitenbezeichnung ohne die Endung .htm gemeint.

Link Quellcode
Home <a href="frameset.php?seite=home" target="_self">Home</a>
Kontakt <a href="frameset.php?seite=kontakt" target="_self">Kontakt</a>
Profil <a href="frameset.php?seite=profil" target="_self">Profil</a>

 

Quellcode des Framesets

Irgendwo am Anfang der Seite wird die Variable namens "seite" empfangen.

<html><head><title>Seitentitel</title>

<?php
$seite = $_GET["seite"];
?>

Zwischen Head und Body wird das Frameset definiert. In der zweiten Spalte wird der Name der Seite mittels PHP echo eingefügt.

</head>
<frameset cols="80,*" frameborder="no" border="0" framespacing="0">
<frame src="nav.htm" name="leftFrame" scrolling="No" noresize="noresize" id="leftFrame" title="leftFrame" />
<frame src="<?php echo $seite ?>.htm" name="mainFrame" id="mainFrame" title="mainFrame" />
</frameset>

<noframes><body></body></noframes></html>

Weiterleitung ins Frameset

Das Ganze kann man auch sehr schön mit Javascript kombinieren, damit eine einzelne Seite eines Framesets, die beispielsweise bei google gefunden wird, nur innerhalb des Framesets angezeigt wird.

Erstelle dir dazu eine js Datei mit folgendem Script, nennen wir sie mal weiterleitung.js Hier wird abgefragt, ob die Url der Seite (self.location.href) die gleiche URL ist, wie die URL des Hauptframes (top.location.href). Das ist natürlich immer dann der Fall wenn die Seite im gesamten Fenster geladen wird und nicht innerhalb eines Framesets. Sofern die Bedingung erfüllt ist, wird die index.php geladen. An diese wird eine Variable namens "seite" angehängt, deren Wert die URL der Seite ist.

function ersetzen()
{
if(top.location.href == self.location.href){
top.location.href="http://www.fahnenblitz.de/index.php?seite="+self.location.href;
}
}

Auf den einzelnen Seite verlinke dieses Script und rufe die Funktion im Body Tag beim Laden der Seite auf.

<script src="weiterleitung.js" type="text/javascript"></script>
</head>
<body onLoad="ersetzen()">

Die index.php, welche das Frameset definiert wird in etwa wie oben beschrieben programmiert. Die an die Variable "seite" angehängte URL, welche durch self.location.href ermittelt wurde, wird mittels GET empfangen.

<?php
$seite = $_GET["seite"];
?>

Zwischen Head und Body wird das Frameset definiert. In der zweiten Spalte wird die URL der Seite mittels PHP echo eingefügt.

</head>
<frameset cols="80,*" frameborder="no" border="0" framespacing="0">
<frame src="nav.htm" name="leftFrame" scrolling="No" noresize="noresize" id="leftFrame" title="leftFrame" />
<frame src="<?php echo $seite ?>" name="mainFrame" id="mainFrame" title="mainFrame" />
</frameset>

 


Webdesign / PHP / mySQL / Dreamweaver MX Tipps
Copyright © Michael Albers
www.pastorpixel.de
www.pastorpixel.de PHP mySQL Tipps