EDV-Beratung K. H. Meyer

Webseiten: Frames nachladen

Meine Site arbeitet mit Frames. Wie schaffe ich es zuverlässig, dass beim Aufruf einer Seite der dazugehörige Frame nachgeladen wird?

Ich habe das Problem mit PHP gelöst. JavaScript ist weniger geeignet, da nicht jeder Surfer dieses auch aktiviert hat. Gegen Frames spricht eigentlich gar nichts; abgesehen vom dem zur Zeit aktuellen CSS-Hype. Denn wenige CSS-Seiten sind für verschiedene Ausgabegeräte vorgesehen und die Browser interpretieren CSS 2.x nach eigenem Gutdünken. Wenn der Browser HMTL in einem Frame nicht vernünftig drucken kann, dann hilft die Suche im Internet weiter. Es gibt integrierbare Tools wie FitToPrint, die dies wesentlich besser können. Das Drucken ist nicht das Problem des Designer, sondern das der Browser-Programmierer! Suchmaschinen, die nicht mit Frames zurecht kommen, sollten diesen Namen nicht tragen dürfen. Ich verstehe nicht, warum die Redakteure von Computerzeitschriften diesen Firmen hier immer wieder zu Gefallen schreiben.

Okay, diese Seite ist inzwischen auch als CSS-Version im Netz -- weil's "In" ist.

Harald Meyer

Doch nun zum Thema:

So sieht's aus:

http://www.meyer-edv.de/edvneu/frames/html/inhalt_yyy.html in neuen Fenster öffnen

http://www.meyer-edv.de/edvneu/frames/html/inhalt_zzz.html in neuen Fenster öffnen

 

Lösungsansatz:

Am Anfang jeder HTML-Seite wird ein PHP-Skript mit Include eingebunden. Dieses legt eine HTML-Seite mit den Frame-Geometrien fest und deklariert die Menü-Seite und den Frameinhalt. Danach wird ein weiteres Skript aufgerufen, das das Framegerüst zusammenbaut und die gewünschte Seite in den Inhaltsbereich lädt. Dies darf jedoch nur dann geschehen, wenn das angegebene Menü nicht schon bereits am Bildschirm ist.

Die mit einem Framegerüst zu umgebende Seite wird als Variable an das Framegerüst übergeben:
framegerüst?seite=wunsch.html.
Erfolgt keine Angabe, wird eine Standardseite geladen. Innerhalb der Site werden Links auf einen neuen Frame ebenfalls mit framegerüst?seite=wunsch.html dargestellt. Hierdurch können bei Suchmaschinen-Ergebnissen Probleme entstehen und ein Frameset nicht geladen werden. Deshalb erfolgt eine zusätzliche Prüfung auf die aktuelle Session-ID von PHP.

Nebenbei soll der Framedeklaration ein Noframe-Abschnitt (extern per normaler HTML-Seite definierbar) mit auf den Weg gegeben werden sowie externe Meta-Tags.

Die folgenden Beispiele zeigen die Wirkungsweise anhand der HTML-Dateien inhalt_yyy.html bzw. inhalt_zzz.html, welche zwei verschiedene Frames (in diesem Fall nur unterschiedliche Menüs) benötigen.

Für alle benötigten Dateien stehen als Download bereit. In den Dateien findet sich eine --- wie ich hoffe -- ausreichende Kommentierung.

Die Dateien wurden in der Vorversion dieser Site eingesetzt. Die Dateistruktur sieht so aus:

FRAMES

     
 

.htaccess

  Über die Datei .htaccess wird die PHP-Auswertung zusätzlich für die Dateiendungen .htm,.html freigeschalten.
 

frametest.php

  Sobald ein neues Frameset erforderlich wird, ruft diese Datei die entsprechende Framedefinitionsdatei auf (zB. yyy.html). Diese legt die HTML-Seiten für die Einzelframes fest und startet den Gerüstgenerator frameset.php.
 

frameset.php

  Gerüstgenerator
Anhand der Angaben aus den Framedefinition-Dateien und inc_x.php baut dieser ein Framegerüst inkl. Metatags und Noframe-Abteilung zusammen und schickt die Definition an den Browser.
 

HTML

   
   

.htaccess

 
   

inhalt_yyy.php

inhalt_zzz.php

Seiten mit dem im Hauptframe darzustellenden HTML-Inhalten YYY und ZZZ die jeweils unterschiedliche Menüs etc. benötigen
   

inc_yyy.php

inc_zzz.php

Für jede benötigte Frame-Gerüst-Version gibt es eine inc_x.php. Darin wird die Menüdatei und die Geometriedatei für das Frameset definiert und anschließend frametest.php aufgerufen.
   

yyy.html

zzz.html

Framedefinition-Dateien
Definition der Frameausmasse sowie der in die Frames zu ladenden HTML-Datein. Bekanntgabe des aktuellen Menünamens (eigentlich des Framesetnamens) und Start des Framesetgenerators frameset.php.
       
       
   

inc_edv.php

Definitionen und Script für den passenden Frame
   

fr_nav.htm

Linker Navigationsframe
   

fr_ecke.htm

Titelframe, linke Ecke über Menü
   

fr_titel.htm

Titelframe, rechter Teil
   

noframe.htm

Noframe-HTML-Text
Komplette HTML-Seite für den Noframe-Abschnitt. Wenn diese nicht vorhanden ist, wird aus allen Links im Menü ein Noframe-Abschnitt automatische generiert.
   

meta.htm

HTML-Datei mit allen Meta-Tags (ohne Body und Body-Tags)
 

PICS

  Bilder halt ...