{"id":34371,"date":"2025-04-24T10:35:04","date_gmt":"2025-04-24T08:35:04","guid":{"rendered":"https:\/\/www.studioenns.eu\/wordpress\/aktuell\/?p=34371"},"modified":"2025-04-24T10:35:04","modified_gmt":"2025-04-24T08:35:04","slug":"beitrag-11-von-15-gibt-es-alternativen-vergleich-der-iframe-loesung-mit-anderen-ansaetzen","status":"publish","type":"post","link":"https:\/\/www.studioenns.eu\/wordpress\/von2016bisjetzt\/beitrag-11-von-15-gibt-es-alternativen-vergleich-der-iframe-loesung-mit-anderen-ansaetzen\/studioenns\/onair","title":{"rendered":"Beitrag 11 von 15: Gibt es Alternativen? Vergleich der iframe-L\u00f6sung mit anderen Ans\u00e4tzen"},"content":{"rendered":"<!-- RS_MODULE_CODE_2.5.0-C --><div id=\"readspeaker_button34371\" class=\"rs_skip rsbtn rs_preserve\"><a class=\"rsbtn_play\" title=\"Um den Text anzuh&ouml;ren, verwenden Sie bitte ReadSpeaker\" accesskey=\"L\" href=\"https:\/\/app-eu.readspeaker.com\/cgi-bin\/rsent?customerid=13430&amp;lang=de_de&amp;readid=rspeak_read_34371&amp;url=https%3A%2F%2Fwww.studioenns.eu%2Fwordpress%2Fvon2016bisjetzt%2Fwp-json%2Fwp%2Fv2%2Fposts%2F34371\"><span class=\"rsbtn_left rsimg rspart\"><span class=\"rsbtn_text\"><span>Vorlesen<\/span><\/span><\/span><span class=\"rsbtn_right rsimg rsplay rspart\"><\/span><\/a><\/div><div id=\"rspeak_read_34371\"><p>**Beitrag 11 von 15: Gibt es Alternativen? Vergleich der iframe-L\u00f6sung mit anderen Ans\u00e4tzen**<\/p>\n<p>&#8222;`html<\/p>\n<article>\n<h2>Beitrag 11: Gibt es Alternativen? Vergleich der iframe-L\u00f6sung mit anderen Ans\u00e4tzen<\/h2>\n<p>Wir haben uns nun ausf\u00fchrlich mit unserem Zentralmen\u00fc besch\u00e4ftigt, das via iframe implementiert ist. Doch ist der iframe die einzige M\u00f6glichkeit, ein solches zentral verwaltetes, website-\u00fcbergreifendes Men\u00fc zu realisieren? Keineswegs! Es gibt verschiedene andere technische Ans\u00e4tze, die jeweils ihre eigenen Vor- und Nachteile haben. In diesem Beitrag wollen wir einige dieser Alternativen vorstellen und erl\u00e4utern, warum wir uns letztendlich f\u00fcr die iframe-L\u00f6sung entschieden haben.<\/p>\n<p>Die Wahl der richtigen Methode h\u00e4ngt von vielen Faktoren ab: der bestehenden technischen Infrastruktur, den verf\u00fcgbaren Entwicklerressourcen, den spezifischen Anforderungen an Flexibilit\u00e4t und Performance sowie der Anzahl und Art der zu vernetzenden Webseiten.<\/p>\n<h3>Alternative 1: WordPress Multisite Netzwerk-Men\u00fcs<\/h3>\n<p>Wenn alle unsere Webseiten Teil einer einzigen **WordPress Multisite-Installation** w\u00e4ren, k\u00f6nnten wir die eingebaute Funktionalit\u00e4t von WordPress nutzen, um Men\u00fcs netzwerkweit zu verwalten oder zumindest einfacher auf den einzelnen Seiten zu synchronisieren.<\/p>\n<ul>\n<li><strong>Wie es funktioniert:<\/strong> In einer Multisite-Umgebung kann man theoretisch Plugins oder Code verwenden, der ein zentral definiertes Men\u00fc auf allen Seiten des Netzwerks anzeigt. Es gibt Plugins, die Men\u00fcs zwischen Seiten synchronisieren oder eine globale Men\u00fcoption anbieten.<\/li>\n<li><strong>Vorteile:<\/strong> Nahtlose Integration ins WordPress-\u00d6kosystem. Kein externer Server n\u00f6tig. Potenzielle Nutzung der WordPress-Benutzerverwaltung und anderer Multisite-Features.<\/li>\n<li><strong>Nachteile:<\/strong> Setzt voraus, dass *alle* betreffenden Seiten in *einer* Multisite-Installation laufen. Dies ist oft nicht der Fall, wenn Projekte historisch gewachsen sind oder unterschiedliche technische Anforderungen haben. Eine Umstellung auf Multisite kann komplex sein. Weniger Flexibilit\u00e4t, wenn auch Nicht-WordPress-Seiten eingebunden werden sollen.<\/li>\n<li><strong>Warum nicht f\u00fcr uns (vermutlich):<\/strong> Unsere verschiedenen Seiten laufen m\u00f6glicherweise nicht alle unter einer Multisite-Instanz, oder die Umstellung w\u00e4re zu aufwendig gewesen. Die iframe-L\u00f6sung ist unabh\u00e4ngig von der WordPress-Struktur der Einzelseiten.<\/li>\n<\/ul>\n<h3>Alternative 2: Serverseitige Einbindung (Server-Side Includes &#8211; SSI)<\/h3>\n<p>SSI ist eine \u00e4ltere, aber immer noch funktionsf\u00e4hige Technik, bei der der Webserver angewiesen wird, den Inhalt einer Datei an einer bestimmten Stelle in eine andere Datei einzuf\u00fcgen, *bevor* die Seite an den Browser gesendet wird.<\/p>\n<ul>\n<li><strong>Wie es funktioniert:<\/strong> Man w\u00fcrde die `home.html` (oder eine reine HTML-Fragment-Version davon) zentral speichern. In den WordPress-Template-Dateien (z.B. `header.php`) w\u00fcrde man statt des iframes einen SSI-Befehl einf\u00fcgen, z.B. `<!--#include virtual=\"\/pfad\/zur\/zentralmenue.html\" -->`. Der Webserver (z.B. Apache oder Nginx, wenn entsprechend konfiguriert) f\u00fcgt den Inhalt vor der Auslieferung ein.<\/li>\n<li><strong>Vorteile:<\/strong> Das Ergebnis ist reines HTML ohne Frame-Struktur. Keine zus\u00e4tzliche HTTP-Anfrage durch den Browser f\u00fcr den Men\u00fcinhalt (der Server erledigt das). Potenzielle Performance-Vorteile.<\/li>\n<li><strong>Nachteile:<\/strong> Erfordert Server-Konfiguration (SSI muss aktiviert sein). Funktioniert nur, wenn alle Seiten auf demselben Server oder einem Serververbund laufen, der Zugriff auf die zentrale Datei hat. Weniger flexibel bei der Verteilung \u00fcber komplett getrennte Hosting-Umgebungen. Styling-Konflikte sind wahrscheinlicher, da das Men\u00fc-HTML direkt Teil der Hauptseite wird und deren CSS darauf wirken kann (und umgekehrt).<\/li>\n<li><strong>Warum nicht f\u00fcr uns (vermutlich):<\/strong> Eventuell unterschiedliche Hosting-Umgebungen oder fehlende SSI-Konfiguration. Die iframe-L\u00f6sung ist hosting-unabh\u00e4ngiger. Das Risiko von CSS-Konflikten ist beim iframe geringer.<\/li>\n<\/ul>\n<h3>Alternative 3: JavaScript-basierte Einbindung (API + Client-Side Rendering)<\/h3>\n<p>Ein moderner Ansatz w\u00e4re, das Men\u00fc dynamisch mit JavaScript zu laden und darzustellen.<\/p>\n<ul>\n<li><strong>Wie es funktioniert:<\/strong> Man erstellt eine zentrale API (Application Programming Interface), die die Men\u00fcstruktur (z.B. als JSON-Daten) bereitstellt. Auf jeder WordPress-Seite wird ein kleines JavaScript ausgef\u00fchrt. Dieses Skript ruft die API auf, empf\u00e4ngt die Men\u00fcdaten und rendert das Men\u00fc-HTML direkt im DOM der Seite. Oft wird auch ein zentrales CSS f\u00fcr das Styling nachgeladen.<\/li>\n<li><strong>Vorteile:<\/strong> Sehr flexibel. Kann komplexe Interaktionen erm\u00f6glichen. Men\u00fcdaten k\u00f6nnen leicht gecached werden. Die Men\u00fc-Quelle kann \u00fcberall liegen.<\/li>\n<li><strong>Nachteile:<\/strong> Deutlich komplexer in der Entwicklung (API muss gebaut und gewartet werden, JavaScript f\u00fcr Rendering schreiben). Abh\u00e4ngigkeit von JavaScript (wenn JS deaktiviert ist, wird kein Men\u00fc angezeigt, es sei denn, man hat ein Fallback). Potenzielle Performance-Probleme, wenn das Skript schlecht optimiert ist oder die API langsam antwortet (Men\u00fc erscheint erst sp\u00e4t). H\u00f6herer initialer Entwicklungsaufwand.<\/li>\n<li><strong>Warum nicht f\u00fcr uns (vermutlich):<\/strong> Die iframe-L\u00f6sung ist deutlich einfacher und schneller umzusetzen, erfordert keine API-Entwicklung und funktioniert auch ohne JavaScript (das Men\u00fc wird angezeigt, auch wenn JS deaktiviert ist, solange iframes unterst\u00fctzt werden). Der Nutzen der h\u00f6heren Komplexit\u00e4t stand m\u00f6glicherweise nicht im Verh\u00e4ltnis zum Bedarf.<\/li>\n<\/ul>\n<h3>Alternative 4: Web Components \/ Custom Elements<\/h3>\n<p>Ein weiterer moderner Ansatz, der auf Webstandards basiert.<\/p>\n<ul>\n<li><strong>Wie es funktioniert:<\/strong> Man entwickelt eine &#8222;Web Component&#8220; (z.B. `<zentral-menue>`), die die gesamte Logik und das Styling des Men\u00fcs kapselt. Diese Komponente wird als JavaScript-Datei zentral bereitgestellt. Auf den WordPress-Seiten muss nur das Skript eingebunden und das Custom Element `<zentral-menue><\/zentral-menue>` an der gew\u00fcnschten Stelle platziert werden.<\/li>\n<li><strong>Vorteile:<\/strong> Saubere Kapselung (Shadow DOM verhindert Styling-Konflikte). Wiederverwendbar und standardkonform.<\/li>\n<li><strong>Nachteile:<\/strong> Erfordert modernes JavaScript und Kenntnisse in der Entwicklung von Web Components. Browser-Kompatibilit\u00e4t muss beachtet werden (obwohl heute gut unterst\u00fctzt). Kann \u00e4hnlich komplex sein wie der API-Ansatz, wenn auch anders strukturiert.<\/li>\n<li><strong>Warum nicht f\u00fcr uns (vermutlich):<\/strong> \u00c4hnliche Gr\u00fcnde wie bei Alternative 3: Die iframe-L\u00f6sung war vermutlich einfacher und schneller verf\u00fcgbar und erf\u00fcllte die Anforderungen ausreichend.<\/li>\n<\/ul>\n<h3>Alternative 5: Manuelle Synchronisation (Keine echte Zentralisierung)<\/h3>\n<p>Die &#8222;Low-Tech&#8220;-Alternative w\u00e4re, das Men\u00fc einfach auf jeder Seite manuell identisch aufzubauen und bei \u00c4nderungen eben doch jede Seite einzeln zu pflegen.<\/p>\n<ul>\n<li><strong>Vorteile:<\/strong> Keine zus\u00e4tzliche Technik n\u00f6tig. Funktioniert immer.<\/li>\n<li><strong>Nachteile:<\/strong> Extrem hoher Wartungsaufwand bei mehreren Seiten. Hohe Fehleranf\u00e4lligkeit. Keine echte Zentralisierung. Skaliert nicht.<\/li>\n<li><strong>Warum nicht f\u00fcr uns:<\/strong> Genau die Nachteile dieser Methode waren der Grund, eine zentrale L\u00f6sung wie das iframe-Men\u00fc einzuf\u00fchren.<\/li>\n<\/ul>\n<h3>Warum also der iframe? Eine pragmatische Wahl<\/h3>\n<p>Die Entscheidung f\u00fcr die iframe-L\u00f6sung war wahrscheinlich eine **pragmatische**:<\/p>\n<ul>\n<li><strong>Einfachheit:<\/strong> Die Implementierung ist vergleichsweise einfach. Man ben\u00f6tigt nur eine statische HTML-Datei (`home.html` mit CSS\/JS) und eine einzige Zeile Code (den `<iframe>`-Tag) auf den Zielseiten.<\/li>\n<li><strong>Schnelle Umsetzung:<\/strong> Die L\u00f6sung l\u00e4sst sich schnell realisieren, ohne komplexe Backend- oder Frontend-Entwicklung.<\/li>\n<li><strong>Gute Isolation:<\/strong> Styling- und Skript-Konflikte zwischen Men\u00fc und Hauptseite werden durch den iframe effektiv verhindert.<\/li>\n<li><strong>Unabh\u00e4ngigkeit:<\/strong> Funktioniert \u00fcber verschiedene Hostings und Server hinweg, solange die `home.html` erreichbar ist. Ben\u00f6tigt keine spezielle Serverkonfiguration (wie SSI) oder komplexe Client-Side-Logik.<\/li>\n<li><strong>Ausreichende Funktionalit\u00e4t:<\/strong> F\u00fcr den Zweck eines relativ statischen Navigationsmen\u00fcs bietet der iframe ausreichende Funktionalit\u00e4t.<\/li>\n<\/ul>\n<p>Sicherlich hat der iframe auch Nachteile (Performance-Overhead, feste H\u00f6he kann einschr\u00e4nkend sein, Sicherheitsaspekte m\u00fcssen bedacht werden), aber in vielen Szenarien stellt er einen guten Kompromiss dar, insbesondere wenn Einfachheit und schnelle Implementierung wichtige Kriterien sind.<\/p>\n<p>Im n\u00e4chsten Beitrag wagen wir einen Blick in die Zukunft: Welche Weiterentwicklungen oder \u00c4nderungen k\u00f6nnten f\u00fcr unser Zentralmen\u00fc anstehen?<\/p>\n<hr>\n<p>#Zentralmen\u00fc,,,, #Alternativen,,,, #iframe,,,, #WordPressMultisite,,,, #ServerSideIncludes,,,, #JavaScript,,,, #API,,,, #WebComponents,,,, #Webentwicklung,,,, #Technologievergleich,,,, #StudioEnns,,,, #Pragmatismus,,,, #VorUndNachteile<\/p>\n<\/article>\n<p>&#8222;`<\/p>\n<p>&#8212;<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p><!-- RS_MODULE_CODE_2.5.0-C --><\/p>\n<div id=\"readspeaker_button34371\" class=\"rs_skip rsbtn rs_preserve\"><a class=\"rsbtn_play\" title=\"Um den Text anzuh&ouml;ren, verwenden Sie bitte ReadSpeaker\" accesskey=\"L\" href=\"https:\/\/app-eu.readspeaker.com\/cgi-bin\/rsent?customerid=13430&amp;lang=de_de&amp;readclass=post-34371&amp;url=https%3A%2F%2Fwww.studioenns.eu%2Fwordpress%2Fvon2016bisjetzt%2Fwp-json%2Fwp%2Fv2%2Fposts%2F34371\"><span class=\"rsbtn_left rsimg rspart\"><span class=\"rsbtn_text\"><span>Vorlesen<\/span><\/span><\/span><span class=\"rsbtn_right rsimg rsplay rspart\"><\/span><\/a><\/div>\n<div id=\"rspeak_read_34371\">**Beitrag 11 von 15: Gibt es Alternativen? Vergleich der iframe-L\u00f6sung mit anderen Ans\u00e4tzen** &#8222;`html Beitrag 11: Gibt es Alternativen? Vergleich der iframe-L\u00f6sung mit anderen Ans\u00e4tzen Wir haben uns nun ausf\u00fchrlich mit unserem Zentralmen\u00fc besch\u00e4ftigt, das <a class=\"mh-excerpt-more\" href=\"https:\/\/www.studioenns.eu\/wordpress\/von2016bisjetzt\/beitrag-11-von-15-gibt-es-alternativen-vergleich-der-iframe-loesung-mit-anderen-ansaetzen\/studioenns\/onair\" title=\"Beitrag 11 von 15: Gibt es Alternativen? Vergleich der iframe-L\u00f6sung mit anderen Ans\u00e4tzen\">[&#8230;]<\/a><\/div>\n<\/div>","protected":false},"author":1,"featured_media":32502,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":3,"footnotes":""},"categories":[28],"tags":[7722,7723,3001,758,7369,7724,53,7725,7726,7727,256,7728,7697],"class_list":["post-34371","post","type-post","status-publish","format-standard","has-post-thumbnail","category-noch-nicht-im-archiv","tag-alternativen","tag-api","tag-iframe","tag-javascript","tag-pragmatismus","tag-serversideincludes","tag-studioenns","tag-technologievergleich","tag-vorundnachteile","tag-webcomponents","tag-webentwicklung","tag-wordpressmultisite","tag-zentralmenue"],"_links":{"self":[{"href":"https:\/\/www.studioenns.eu\/wordpress\/von2016bisjetzt\/wp-json\/wp\/v2\/posts\/34371","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.studioenns.eu\/wordpress\/von2016bisjetzt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.studioenns.eu\/wordpress\/von2016bisjetzt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.studioenns.eu\/wordpress\/von2016bisjetzt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.studioenns.eu\/wordpress\/von2016bisjetzt\/wp-json\/wp\/v2\/comments?post=34371"}],"version-history":[{"count":0,"href":"https:\/\/www.studioenns.eu\/wordpress\/von2016bisjetzt\/wp-json\/wp\/v2\/posts\/34371\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.studioenns.eu\/wordpress\/von2016bisjetzt\/wp-json\/wp\/v2\/media\/32502"}],"wp:attachment":[{"href":"https:\/\/www.studioenns.eu\/wordpress\/von2016bisjetzt\/wp-json\/wp\/v2\/media?parent=34371"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.studioenns.eu\/wordpress\/von2016bisjetzt\/wp-json\/wp\/v2\/categories?post=34371"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.studioenns.eu\/wordpress\/von2016bisjetzt\/wp-json\/wp\/v2\/tags?post=34371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}