HTML-Dokument teilweise verändern
Mathew
- dhtml
Hallo,
ich habe hier schon verschiedene speziellere Fragen zum gleichen Thema gestellt, bin aber immer noch nicht zum Ziel gekommen, deshalb will ich jetzt mal das ganze Problem erläutern.
Meine Website folgt, oder soll zumindest den Richtlinien für HTML 4.0 strict folgen, d.h. ich benutze z.B. keinerlei Frameset und alle Inhalte befinden sich innerhalb von Blockelementen.
Die Seite hat verschieden div-Blöcke, welche fürs Menü, einen für die Titelgrafik, verschiedene andere für unterschiedliche Informationen und einen für den "Hauptinhalt der Seite". Diese Blöcke sind größtenteils absolut positioniert und überlappen sich teilweise.
Das Problem ist folgendes: Wenn man über das Menü eine andere Seite aufruft, wird ein neues HTML-Dokument geladen, das sich nur durch den "Hauptinhalt" unterscheidet, das Menü, die Titelgrafik und verschieden andere Dinge bleiben vollständig identisch, müssen aber trotzdem wieder neu geladen werden. (Nicht nur, dass dieses Gerüst der Website, mit jeder angeforderten Unterseite erneut aufgebaut werden muss, auch muss ich Änderungen z.B am Menü in allen Dokumenten parallel vornehmen.)
Ich habe dann hier gefragt, ob das Unterbringen der verschiedenen "Hauptinhalte" der verschiedenen Seiten in zusätzlichen div-Blöcken, die dann je nach gewünschter Seite mit Hilfe von JavaScript ein- bzw. ausgeblendet werden, sinnvoll ist. Zu dieser Idee wurde mir bestätigt, dass dies nicht sinnvoll ist, weil alle Informationen mit diesem einen HTML-Dokument geladen werden, obwohl gar nicht sicher ist, dass der User überhaupt alle Informationen ansehen will.
Wie kann ich also den Code für einen anderen "Hauptinhalt" anderweitig importieren, wenn dieser durch einen Klick auf einen Link angefordert wird, ohne dass die Informationen beim ersten Aufruf der Seite mit geladen werden müssen, oder jedes mal die ganze Seite erneut aufgebaut werden muss?
mr
Hallo,
Das Problem ist folgendes: Wenn man über das Menü eine andere Seite aufruft, wird ein neues HTML-Dokument geladen, das sich nur durch den "Hauptinhalt" unterscheidet, das Menü, die Titelgrafik und verschieden andere Dinge bleiben vollständig identisch, müssen aber trotzdem wieder neu geladen werden.
Wie kann ich also den Code für einen anderen "Hauptinhalt" anderweitig importieren, wenn dieser durch einen Klick auf einen Link angefordert wird, ohne dass die Informationen beim ersten Aufruf der Seite mit geladen werden müssen, oder jedes mal die ganze Seite erneut aufgebaut werden muss?
Mir ist keine sinnvolle Möglichkeit bekannt.
Gruss,
Kube
Hallo
Das Problem ist folgendes: Wenn man über das Menü eine andere Seite aufruft, wird ein neues HTML-Dokument geladen, das sich nur durch den "Hauptinhalt" unterscheidet, das Menü, die Titelgrafik und verschieden andere Dinge bleiben vollständig identisch, müssen aber trotzdem wieder neu geladen werden.
Nachtrag: Wenn du externe JS und CSS-Scripte nutzt, dann ist das meiste im Cache, genau wie deine Titelgrafik
Gruss,
Kube
Hallo
Das Problem ist folgendes: Wenn man über das Menü eine andere Seite aufruft, wird ein neues HTML-Dokument geladen, das sich nur durch den "Hauptinhalt" unterscheidet, das Menü, die Titelgrafik und verschieden andere Dinge bleiben vollständig identisch, müssen aber trotzdem wieder neu geladen werden.
Nachtrag: Wenn du externe JS und CSS-Scripte nutzt, dann ist das meiste im Cache, genau wie deine Titelgrafik
Ok, aber die Seite wird trotzdem jedes mal neu aufgebaut, was nicht so gut aussieht. Und ich muss, wenn ich das Menü der Website, oder eine andere Designkomponente verändern will, dies in allen Dokumenten (über 50) parallel tun. Ist dies etwa trotzdem die beste Variante?
mr
Hallo,
Dein Problem läst sich durch den Einsatz von "Includes" lösen:
Der Block für den Inhalt ist auf jeder Seite eben mit dem Inhalt gefüllt, in die anderen Blöcken, die auf allen Seiten gleich sind, z.B. Titel oder Navigation, werden die Daten mittels eines "Include-Befehls" eingebaut. Dieser "Include-Befehl" kann auf dem Entwicklungsrechner ablaufen, wenn Du über einen entsprechenden HTML-Editor verfügst, oder auf dem WWW-Server über Server Site Includes (SSI).
Gruß, Jürgen
Hallo,
Dein Problem läst sich durch den Einsatz von "Includes" lösen:
Kleine Erweiterung:
Ich habe gerade Mathews letzten Thread mir angeschaut, er hat PHP zur Verfügung und was er wirklich suchte, war:
include(), http://www.php.net/manual/de/function.include.php
Damit kann man z.B. ein Menü einbinden, und muss nur an einer Stelle ändern.
Gruss,
Vinzenz
Hallo,
Dein Problem läst sich durch den Einsatz von "Includes" lösen:
Kleine Erweiterung:
Ich habe gerade Mathews letzten Thread mir angeschaut, er hat PHP zur Verfügung [..]
Genau, für die Lösung des Problems habe ich nahezu alle Möglichkeiten (PHP, MySQL, CGI/Perl), d.h. ich kann das auf meiner Website einsetzen, programmieren kann ich nur ein wenig PHP, aber nur wenig.
und was er wirklich suchte, war:
include(), http://www.php.net/manual/de/function.include.php
Ist folgendes ausreichend, oder noch nicht?
<div>
<?php
include 'menu.htm';
?>
<div>
Damit kann man z.B. ein Menü einbinden, und muss nur an einer Stelle ändern.
Wird das Menü trotzdem bei jedem Aufruf eines neuen Dokuments neu aufgebaut?
mr
Hallo Marzel,
<div>
<div id="menu">
Und eine entsprechende Style-Definition im Stylesheet ;-)
<?php
include 'menu.htm';
?>
Ich bevorzuge:
<?php include('menu.htm'); ?>
<!-- genauer: menu.html -->
<div>
Damit kann man z.B. ein Menü einbinden, und muss nur an einer Stelle ändern.
Ja!
Wird das Menü trotzdem bei jedem Aufruf eines neuen Dokuments neu aufgebaut?
Ja, es wird bei jedem Aufruf neu geladen und aufgebaut. Im Sinne eines schnellen Seitenaufbaus und leichter Wartbarkeit solltest Du Dein Menu (1) einfach halten, z.B. eine Liste, (2) alle Style-Definitionen (soweit wie möglich) in einer externen CSS-Datei halten. Dann werden da ein paar hundert Byte eingeladen, das ist sehr wahrscheinlich gut zu verkraften.
Dein Menu funktioniert am Besten ohne Javascript *g*, und funktioniert dann auch in textorientierten Browsern, was willst Du mehr?
Gut aussehen kann es trotzdem.
Gruss,
Vinzenz
Hallo Vinzenz,
<div id="menu"><?php include('menu.html'); ?><div>
Ich habe es ausprobiert, es funktioniert wie gewünscht.
Ist dieser "include-Vorgang" schnell? Ich habe den Eindruck, dass die Seite, so länger zum laden braucht als vorher, kann das sein?
mr
Hallo,
Dein Problem läst sich durch den Einsatz von "Includes" lösen:
Der Block für den Inhalt ist auf jeder Seite eben mit dem Inhalt gefüllt, in die anderen Blöcken, die auf allen Seiten gleich sind, z.B. Titel oder Navigation, werden die Daten mittels eines "Include-Befehls" eingebaut. Dieser "Include-Befehl" kann auf dem Entwicklungsrechner ablaufen, wenn Du über einen entsprechenden HTML-Editor verfügst, oder auf dem WWW-Server über Server Site Includes (SSI).
1. Kannst du bitte ein komplettes Beispiel posten?
2. Löst dieser Ansatz auch das Problem mit dem "immer wieder neu aufbauen, was nicht so gut aussieht" oder nur (immerhin) das Problem mit dem Änderungsaufwand (alle Dokumente parallel anpassen)?
mr
Hallo,
- Kannst du bitte ein komplettes Beispiel posten?
Nein, hab ich leider nicht.
- Löst dieser Ansatz auch das Problem mit dem "immer wieder neu aufbauen, was nicht so gut aussieht" oder nur (immerhin) das Problem mit dem Änderungsaufwand (alle Dokumente parallel anpassen)?
Nein, die Seite wird immer komplett neu geladen. Wenn das zu lange dauert, solltest Du am Design (keine riesigen Grafiken o.ä.) arbeiten. Textgefüllte DIVs kommen normalerweise "auf einem Schlag".
Das Problem mit den Änderungsaufwand wird natürlich gelöst, denn das ist ja der Sinn der "Includes".
Gruß, Jürgen
Hallo
Meine Website folgt, oder soll zumindest den Richtlinien für HTML 4.0 strict folgen, d.h. ich benutze z.B. keinerlei Frameset und alle Inhalte befinden sich innerhalb von Blockelementen.
Ist die Verwendung von HTML 4.01 strict wünschenswert?
Ist das die am besten unterstützte HTML-Variante?
Oli