Ich versuche derzeit, so früh wie möglich einen GET-Parameter zu verarbeiten, ohne natürlich dabei in den Core einzugreifen. Der früheste Event, den ich gefunden habe ist Enlight_Controller_Front_StartDispatch. Das Problem ist nur, dass dieser Event nur beim ersten Seitenaufruf nach dem Löschen des HTTP-Caches feuert und danach nicht mehr. Es handelt sich dabei um die Artikeldetailseite, die ich ungerne auf die Cache-Blacklist setzen würde. Die Frage ist also: Wie kann ich bei jedem Seitenaufruf per Plug-in auf GET-Parameter reagieren bzw. überhaupt Events nutzen?
Hi, das ist nicht möglich, das ist ja gerade der Witz des Caches, dass der Dispatch-Loop nicht betreten wird und Shopware nicht die ganze Logik durchlaufen muss. Bzgl. der Partner-Geschichte: Wenn im Performance-Modul die “internen Statistiken” aktiviert sind, wird der korrekte Cookie dennoch gesetzt, das läuft dann über einen Ajax-Request auf \Shopware_Plugins_Frontend_Statistics_Bootstrap::refreshPartner. Besten Gruß, Daniel
[quote=“Daniel Nögel”]Bzgl. der Partner-Geschichte: Wenn im Performance-Modul die “internen Statistiken” aktiviert sind, wird der korrekte Cookie dennoch gesetzt, das läuft dann über einen Ajax-Request auf \Shopware_Plugins_Frontend_Statistics_Bootstrap::refreshPartner.[/quote] Das hatte ich inzwischen auch schon herausgefunden, weshalb ich den Teil wieder aus dem Beitrag entfernt hatte. Das Problem war in dem Fall, dass bei unserem Template genau dieses JavaScript entfernt wurde. Damit ist mein konkretes Problem aber noch nicht ganz gelöst, da ich beim Aufruf der Artikeldetailseite bereits auf den sPartner-Parameter reagieren möchte, um eine Filterung von Zubehörprodukten vorzunehmen. Ich muss also wirklich ganz am Anfang des Seitenaufrufs auf den Parameter reagieren, da die Kunden u.a. direkt mittels Deeplink auf die Seite springen.
Dann bleibt nur noch einen Controller zu schreiben und diesen mit Actions zu versehen die an den jeweiligen Stellen ausgeführt werden. {action module=widgets controller=CONTROLLER action=ACTION}
Werden die Funktionen so ins Template eingebaut, dann werden sie mit esi-tag eingebunden und wenn man dann in der Bootstrap esi auf true setzt wird dieser Teil des Templates auch mit aktiviertem http-cache neu berechnet. Aus einem Controller kann man auch auf Funktionen der Bootstrap zugreifen, deshalb muss wahrscheinlich nicht viel Logik geändert werden müssen.