PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frameset deprecated ?


CFJH
19.09.2006, 22:06:41
Ich habe irgendwo mal gehört, daß das HTML-Frameset als deprecated (abgelehnt) eingestuft wurde. Neue Webseiten sollten dann keine Frames mehr haben sondern das irgendwie anders lösen.

Frame: was ist 'dran und welche Alternativen gibt es zu Frames ?

rarios
19.09.2006, 22:35:38
vllt. hab ich deine frage falsch verstanden aber egal:
Alternative:
das ganze mit php und einem tabellen design machen.
heißt, du hast n tabelle wo das design is und in der mittleren tabellenspalte werden dann die seiten geladen.
is ganz einfach:
hier die index.php:

<?php

// Unser Gerüst wird in eine Variable $haupt gespeichert
$haupt = implode("",File("design.html"));

// Hier prüfen wir mal ob überhaupt ein Link geklickt wurde bzw. ob die geforderte Seite überhaupt existiert
if (isset($_REQUEST['page']) && file_exists($_REQUEST['page'].".html")) {

// wenn die Seite existiert wird der komplette Dateiname in die Variable $seite gespeichert.
$seite = $_REQUEST['page'].".html";

}
else {

// Wenn kein Link geklickt wurde oder die Seite nicht existiert wird die News-Seite in die Variable $seite gespeichert.
$seite = "start.html";
}

// Hier speichern wir den Inhalt der der Seite (bsp. news.inc.php) in die Variable $datei
ob_start();

include $seite;
$datei= ob_get_contents();

ob_end_clean();


// An dieser Stelle wird unsere Seite zusammengabaut
// Der Platzhalter #inhalt# wird mit dem inhalt der Variable $datei ersetzt
$haupt = str_replace("#inhalt#",$datei,$haupt);

// und wir geben das ganze jetzt nur noch aus.
echo $haupt;

?>


also dir ist sicherlich 'page' aufgefallen.
wenn du page stehen lässt musst du dann bei deiner navigation (hier design.html) die einzelnen links so nenne: index.php?page=blabla
dann muss nur noch eine blabla.html datei da sein.
die sollte dann aus text bestehen nicht aus einem design, das hast du ja schon.
du kannst aber auch alle page in sektion oder meins usw. umändern.
dann hieße der link so index.php?mein=blabla

du kannst dann dir ein design erstellen (mit tabellen) und dann musste in der design.html datei eine tabellenspalte / zeile freilassen und dort NUR #inhalt# reinschreiben.

Erklärung:
Bei der index.php passiert folgendes:
die index.php imploded die datei design.html
dann schaut index.php nach ob irgendwo #inhalt# steht.
#inhalt# ersetzt es dann mit der jeweiligen datei :
index.php?meins=blabla ---> blabla.html
somit wird blabla.html in die tabellenspalte/zeile wo #inhalt# war reingetan.
und am anfang wird halt start.html mit #inhalt# ersetzt.

du musst also nur ein passendes design erstellen.
Beispiel:
eine tabelle mit 2 zeilen und 1 spalte:
index.php ohne ?page=
##################################################

-----------------------------------------------------------------------
Start (index.php?page=start) | Wir (index.php?page=wir) | Kontakt (index.php?page=kontakt) |
-----------------------------------------------------------------------
startlala
-----------------------------------------------------------------------

##################################################




index.php mit ?page=wir
##################################################

-----------------------------------------------------------------------
Start (index.php?page=start) | Wir (index.php?page=wir) | Kontakt (index.php?page=kontakt) |
-----------------------------------------------------------------------
das sind wir
juhu
team:
alfred
theo
anna
-----------------------------------------------------------------------

##################################################

xlb
19.09.2006, 23:49:09
Frames sind (noch) nicht "deprecated". Es gibt selbst für XHTML einen entsprechenden Doctype. Allerdings gibt's eine ganze Reihe von Nachteilen, die bei der Frame-Nutzung entstehen, welche die vermeintlichen Vorteile nicht wirklich "aufwiegen".

Als Alternative sei dir ein Layout mit DIV-Containern empfohlen. Google dazu z.B. mal nach "DIV Layout". Tabellen sind bei aufwändigeren Layouts ein schwerfälliger und unübersichtlicher Klotz am Bein.