PHP durch HTML ersetzen?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

a) Ersetze die Zeile in jedem HTML-Dokument durch den Inhalt von der eingebundenen menu.html.

b) Sofern es der von dir genutzte Webserver unterstützt, kannst du auch SSI stattdessen verwenden.

c) Du kannst die Datei via iFrame einbinden.

Ein Nachteil bei dieser Lösung ist, dass der Frame als eigene Seite gilt, die extra vom Browser geladen werden muss. Die Kommunikation zwischen Frameinhalt und äußerer Webseite ist umständlicher, möglicherweise musst du noch CSS-Styles ergänzen, um bspw. den Rahmen um dem Frame zu verstecken.

d) Du kannst den Inhalt der menu.html ebenso via JavaScript in dein Dokument laden.

Beispiel:

<!doctype html>
<title>Example</title>
<nav id="menu"></nav>
<script>
  fetch("../web2/menu.html")
    .then(response => response.text())
    .then(html => document.getElementById("menu").innerHTML = html);
</script>

Du solltest dabei darauf achten, dass deine HTML-Dokumente valid sind und auch bleiben.

Nachteilhaft an dieser Lösung ist, dass die Inhalte erst nach Laden der Seite dynamisch nachgeladen werden. Wenn etwas schief läuft (Verbindung schlägt fehl / Skript wird nicht ausgeführt), fehlen unter Umständen wichtige Elemente auf der Webseite.

Mir ist keine Funktionalität bekannt, mit der das ginge.

Was möglich wäre, ist das notwenige per JavaScript nachzuladen. Stichwort „ajax“. Allerdings ist das eine eher unschöne Variante, wenn das auch mit php ginge.

Falls du ajax testen möchtest, testest du es am besten mit jQuery. Einfach beide Begriffe mal in einer Suchmaschine eingeben.

gibt es irgendwie Möglichkeiten das ohne php zu machen?

Ja. Dateien können auch mit Server Side Includes eingefügt werden: https://wiki.selfhtml.org/wiki/Webserver/SSI

<!--#include virtual="../web2/menu.html" -->

Geht es um das Einfügen einer HTML Datei, ist das auch problemlos mit reinem HTML möglich, indem du das <object>-Element verwendest:

<object data="../web2/menu.html" width="..." height="..."></object>

Auch das <iframe>-Element kannst du dafür verwenden:

<iframe data="../web2/menu.html"></iframe>

Alex

PHP ist eine serverseitige Programmiersprache.

Solche PHP-Includes sind dann wichtig, wenn die zu inkludierenden Inhalte dynamisch angepasst serverseitig zusammengebaut werden sollen, um sie dann an den Client zu schicken. Diese Inhalte werden beim Client dann nur als HTML zu sehen sein.

Dass man Teile serverseitig inkludiert, dient häuft der leichteren Progammpflege, da man dann nur diese (Unter-)Teile ändern braucht. Sind diese statisch, können die auch in die eigentliche Programmdatei auf Dauer eingebaut werden und bleiben.

Würde mit JavaScript gehen, z.B. so (nicht getestet):

<div id="menuWrapper"></div>
<script>
fetch('../web2/menu.html').then(r => r.text()).then((html) => {
  document.querySelector('#menuWrapper).innerHTML = html;  
});
</script>