Widget (IFrame responsive): FooterScript für Page hinzufügen

  • Hallo,


    für ein selbst erstelltes Widget bräuchte ich die Möglichkeit das Footerscript Attribute der Page via Code in der Standard.html zu setzen, da das Skript von der Artikel-ID abhängig ist.
    In der Referenz fürs Objektmodell habe ich leider nix dazu gefunden.


    Besten Dank.


    madas

  • Hallo,


    Attribute werden ja nur zum Zeitpunkt des Erstellens der Ausgabeseiten aufgelöst und nicht etwa live, wenn eine Seite im Browser geladen wird. Ich vermute also, die angefragte Funktion würde ihnen gar nicht groß helfen und es gibt ggf. bessere Wege das gewünschte zu erreichen. Können Sie grob beschreiben, was das Skript, das mit der Artikel-ID verknüpft sein soll denn macht?

  •  

    Hallo,


    Attribute werden ja nur zum Zeitpunkt des Erstellens der Ausgabeseiten aufgelöst und nicht etwa live, wenn eine Seite im Browser geladen wird. Ich vermute also, die angefragte Funktion würde ihnen gar nicht groß helfen und es gibt ggf. bessere Wege das gewünschte zu erreichen. Können Sie grob beschreiben, was das Skript, das mit der Artikel-ID verknüpft sein soll denn macht?

     

    Hallo,


    danke für die schnelle Rückmeldung. Hm, der Html Code eines Widgets wird doch zu 99% auch nur bei der Erstellung der Seiten aufgelöst, wenn ich nicht ganz daneben liegen.


    Gut dann etwas ausführlicher: Euer IFrame-Widget ist nicht für responsive Websites geeignet, so dass ich mir selber eines bastel möchte. Dazu verwende ich folgende Resize Bibliothek:

    https://github.com/davidjbradshaw/iframe-resizer


    Auf der einzubettenden Seite wird eine JS-Datei eingebunden (und der letzte HTML-Tag mit dem Attribut "data-iframe-height" versehen. Auf der Hostseite muss man 1 bzw. 2 JS-Dateien einbinden (das klappt über das Bundlen ganz gut) und aus diesen JS-Dateien dann noch eine Funktion aufrufen. Der Aufruf diese Funktion sollte möglichst am Ende der Seite stattfinden, sprich genau dort, wo das Footer_Script Attribut eingebunden wird. Der IFrame erhält eine ID, welcher auch beim Funktionsaufruf mitübergeben werden muss, damit die Berechung von Breite und Höhe klappt. Da sich theoretisch jedoch 1-n IFrames auf der Seite befinden können, würde ich der IFrameID gerne die ArtikelID überhelfen. Z.B.: id="IFrame_2023".

    Vielleicht versteht man das Ganze jetzt etwas besser.

    Grüße madas

  • Hallo,


    das würde ich so lösen. Im Standard.html des Widgets setzen Sie für das iFrame eine spezielle Klasse und eine ID, die die Artikel-ID enthält, also z.B. so:


    <iframe src="xyz" class="superFrame" id="frameId<$=article.id$>"></iframe>


    Im JavaScript, das Sie bundeln, initialisieren Sie dann alle iFrames, die durch Ihr Widget erzeugt wurden so:


    JavaScript
    1. $z(document).ready(function(){
    2.     // mittels jQuery-Code alle SuperFame iFrames initialisieren
    3.     $z("iframe.superFrame").each(function(){
    4.         // die eindeutige ID des aktuellen iFrames in variable speichern
    5.         var currentId = $z(this).attr("id");
    6.         // nun der Funktionsaufruf von iFrame-Resizer inkl. Übergabe der iFrame ID aus variable.
    7.         meineFunktion(currentId);
    8.     });
    9. });

    Das ist natürlich alles ungetestet, sollte aber ggf. als Lösungsweg helfen. Oder?

  • Vielen Dank. Werde ich gleich einmal testen.

  • Super. Ich finde es auch besser, sowas eher "generalisiert" anzugehen, als für jede einzelne Widget-Instanz irgendwie zu reagieren. So machen wir das mit den meisten Widgets ja auch (zum Beispiel Bilderalbum). Wir nutzen da auch gerne data-attribute um etwa Widget-spezifische Einstellungen im HTML zu speichern, auf die wir dann darüber von JS aus zugreifen können…


    Nur zur Info: üblicherweise nutz man jQuery ja per $(irgendwas) oder jQuery(irgendwas). $z ist ein alias auf das von uns mitgelieferte jQuery. Ein Benutzer könnte ja selbst nochmals jQuery laden und dann würde der $() oder jQuery() auf die zuletzt geladene Version verweisen. Mittels des Alias $z haben wir für uns einen Weg geschaffen, sicher auf die von uns installierte Version zuzugreifen…

  • Super. Ich finde es auch besser, sowas eher "generalisiert" anzugehen, als für jede einzelne Widget-Instanz irgendwie zu reagieren. So machen wir das mit den meisten Widgets ja auch (zum Beispiel Bilderalbum). Wir nutzen da auch gerne data-attribute um etwa Widget-spezifische Einstellungen im HTML zu speichern, auf die wir dann darüber von JS aus zugreifen können…


    Nur zur Info: üblicherweise nutz man jQuery ja per $(irgendwas) oder jQuery(irgendwas). $z ist ein alias auf das von uns mitgelieferte jQuery. Ein Benutzer könnte ja selbst nochmals jQuery laden und dann würde der $() oder jQuery() auf die zuletzt geladene Version verweisen. Mittels des Alias $z haben wir für uns einen Weg geschaffen, sicher auf die von uns installierte Version zuzugreifen…

    Danke für die zusätzlichen nützlichen Tipps.

    Hier mal eine Beispielwebsite mit dem Widget, die sicher selbst in einem IFrame aufruft.


    https://hosting.zeta-producer.com/4953141007/index.html

    Grüße madas

    PS: das Widget werde ich demnächst mal posten. Muss noch die Anzeige der Voraussetzungen für die Benutzung einbauen.