Gibt es die Möglichkeit Javascript auszuführen nachdem alle Einkaufswelten einer Seite geladen wurde

Aktuell verwenden wir folgende Funktion um Javascript nachdem Laden von Einkaufswelten auszuführen:

 $.subscribe('plugin/swEmotionLoader/onLoadEmotionFinished', function() { //Code goes here });

Das Problem ist allerdings, dass bei Lightboxen oder Gallerien das Overlay mehrmals initialisiert wird, da das Script nach jeder Einkaufswelt ausgeführt wird. Wenn eine Seite also beispielsweise 5 Einkaufswelten mit Lightboxen hat, werden 5 Overlays initialisiert.

Gibt es eine Möglichkeit nach Laden der letzten Einkaufswelt erst das Script ausführen zu lassen, sodass das Overlay nur einmal initialisiert wird?

Hallo,

nein, solch eine Funktion gibt es im Standard von Shopware nicht, wird wahrscheinlich auch schwierig umsetzbar sein, da es ja keinen Zähler gibt und die Einkaufswelten im Bestfall alle gleichzeitig geladen und angezeigt werden. Eventuell könnte man es so lösen, das man der Einkaufswelt eine individuelle CSS-Klasse gibt und dann die Funktion der Lightbox nur ausführt, wenn die geladene Einkaufswelt die CSS-Klasse hat (vorausgesetzt, es gibt die individuelle CSS-Klasse nur einmal auf der Seite).

Grüße

Sebastian

Ich hab das früher mal umgesetzt. Du musst via Javascript für den aktuellen Viewport alle Einkaufswelten zählen. Einfach alle emotion–wrapper elemente loopen und zählen

Dann wenn das Event so oft getriggert wurde => ausführen.

 

Vielen Dank für die schnellen Antworten. Witzigerweise hatte ich es jetzt schon genau wie @Shyim vorgeschlagen hat auch umgesetzt :smiley: