Badges in Einkaufswelten Elementen nicht mehr durch Plugin erweiterbar seit 5.2.x

Hallo Community, 

in einem Plugin sollen die Badges der Einkaufwelten-Artikel erweitert werden. Diese Badges werden im Template listing/product-box/box-emotion.tpl

{* Product badges *}
                {block name='frontend_listing_box_article_badges'}
                    {if !$imageOnly}
                        {include file="frontend/listing/product-box/product-badges.tpl"}
                    {/if}
                {/block}

Daher wird im Plugin in der Template-Datei Views/frontend/listing/product-box/product-badges.tpl das Template der Badges erweitert: 

{extends file="parent:frontend/listing/product-box/product-badges.tpl"}

{* Badges Block leeren *}
{block name="frontend_listing_box_article_badges"}{/block}

Bis Version 5.2.x hat dies auch wunderbar funktioniert. Nun nicht mehr. Hat jemand eine Idee, weshalb das so ist? Im normalen Listing und in den Topsellern funktioniert dies hingegen. 

 

MFG ZENIT

Was funktioniert denn jetzt genau nicht mehr? Ist der Block nicht mehr leer oder wie? Wie sieht denn das Event aus in dem du dein Template Verzeichnis hinzufügst?

Viele Grüße

1 „Gefällt mir“

@simkli schrieb:

Was funktioniert denn jetzt genau nicht mehr? Ist der Block nicht mehr leer oder wie? Wie sieht denn das Event aus in dem du dein Template Verzeichnis hinzufügst?

Viele Grüße

Hi smikli, danke für deine Antwort!

 In den Einkaufswelten-Elementen bleibt die Bearbeitung ergebnislos - nach obigen Beispiel dürften keine Badges mehr gezeigt werden. Sie erscheinen dennoch - allerdings ausschließlich beim Template listing/product-box/box-emotion.tpl - in den Listings und Topsellern werden nach obigem Beispiel keine Badges mehr gezeigt.

Das Event wäre

$this->subscribeEvent(
            'Enlight_Controller_Action_PostDispatchSecure_Frontend',
            'onFrontendPostDispatch'
        );

und in onFrontendPostDispatch füge ich noch Felder hinzu - die Variablen der Konfig kann ich im Debug-Modus mit FirePhp sehen:

/** @var \Enlight_Controller_Action $controller */
        $controller = $args->get('subject');
        $view = $controller->View();
        $view->addTemplateDir(
            __DIR__. '/Views'
        );

 

Hi zenit,

ja für die Einkaufswelten reicht das …PostDispatchSecure_ Frontend  Event nicht. Einkaufswelten werden über das Widget-Modul geladen. Wie das vorher funktionieren konnte kann ich mir nicht erklären. Das ist seit Shopware 4 so.

Also entweder hängst du dich noch zusätzlich an PostDispatchSecure_Widgets oder du lässt das Frontend weg und benutzt nur noch PostDispatchSecure ohne Frontend.

Viele Grüße

1 „Gefällt mir“

Danke für deine Antwort. Ich werde das bald testen und gebe eine Rückmeldung.

Ich führe in meinem Plugin noch weitere Events aus:

$this->subscribeEvent(
            'Enlight_Controller_Action_PostDispatchSecure_Widgets_Listing',
            'onFrontendPostDispatch'
        );

Vll. funktionierte es mit einem von denen… nur PostDispatchSecure_Widgets war nicht dabei. Das werde ich testen :wink:

Hi zenit,

ahh da ist das letzte Puzzleteil  Grin. Ich war die ganze Zeit noch am grübeln wie es denn sein kann, dass der Topseller Slider im Listing funktioniert. Dieser wird ja auch über das Widgetsmodul angesteuert. Das wäre jedoch mit deinem zweiten Event nun aufgeklärt. 

Ja versuch es mal ohne Listing am Ende dann greift das Event sowohl im Listing als auch in den Einkaufswelten.

Viele Grüße

1 „Gefällt mir“