[5.6.6] box_article im Plugin erweitern funktioniert nicht mit Widgets

Hallo zusammen,

ich versuche, in meinem Plugin das Template für box_article zu erweitern. Die Erweiterung funktioniert prima auf der ersten Seite. Sobald ich aber über infinite scrolling Daten nachlade oder die Seite wechsle, wird das Template aus dem Plugin nicht gezogen.

Ich subscribe auf folgende Events:

    public static function getSubscribedEvents()
    {
        return [
            'Enlight_Controller_Action_PostDispatch' => 'onPostDispatch',
            'Shopware_Controllers_Widgets_Listing_fetchListing_preFetch' => 'onPostDispatch'
        ];
    }

    public function onPostDispatch(\Enlight_Controller_ActionEventArgs $args)
    {
        $controller = $args->get('subject');
        $view = $controller->View();

        $view->addTemplateDir($this->pluginDirectory . '/Resources/views');
    }

 

Das Template sieht aktuell so aus:

{extends file='parent:frontend/listing/box_article.tpl'}

{block name='frontend_listing_box_article_content'}
    {$smarty.block.parent}

    Test
{/block}

Was übersehe ich? Bzw. auf welches Event muss ich lauschen, damit die Erweiterung auch für infinite scrolling funktioniert?

Danke für Eure Hilfe!

In diesem Falle musst du wohl über die box-basic.tpl gehen, Beispiel:

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

{block name="frontend_listing_box_article_content"}
  {$smarty.block.parent}
  Test
{/block}

 

Ich bin jetzt ein bisschen tiefer durch gestiegen. Das Infitine Scrolling funktioniert tatsächlich mit diesem Ansatz. Mein Problem scheint eher zu sein, dass das Frontend Widgets verwendet. Wenn ich das Standard Layout verwendet, klappt infinite Scrolling wie oben beschrieben. Wenn ich Widgets verwende, wird das Plugin gar nicht angesprochen.

Ich hatte jetzt folgende Konfiguration auch mal probiert, leider ohne Erfolg bisher:

    public static function getSubscribedEvents()
    {
        return [
            'Enlight_Controller_Action_PostDispatch' => 'onPostDispatch',
            'Shopware_Controllers_Widgets_Listing_fetchListing_preFetch' => 'onAjaxListing',
            'Enlight_Controller_Action_PostDispatchSecure_Frontend_Detail' => 'onFrontendPostDetail',
            'Enlight_Controller_Action_PreDispatch_Frontend' => 'onAjaxListing',
            'Enlight_Controller_Action_PreDispatch_Widgets' => 'onAjaxListing'
        ];
    }

 

Hm, was du mit dem Plugin jetzt vor hast weiß ich nicht. Deshalb kann ich dir gegenwärtig nicht so richtig folgen. Für das Listing müsste ja Enlight_Controller_Action_PostDispatch_Frontend_Listing reichen.

Guter Punkt, das sollte ich natürlich hier verraten :slight_smile:

Ich möchte ein paar zusätzliche Elemente in der Artikel-Box anzeigen, die über das Plugin verwaltet werden.

Ah ok, jo wie schon erwähnt würde ich das über Enlight_Controller_Action_PostDispatch_Frontend_Listing versuchen. Also im normalen Listing würde das auf Fälle gehen. Beim Ajax bin ich mir eben etwas unsicher. Also Testen :slight_smile:

Shopware_Controllers_Widgets_Listing_fetchListing_preFetch ist für Ajax … das geht, eben mal selber probiert

Danke fürs Ausprobieren. Ajax funktioniert inzwischen. Leider nur noch nicht das Laden, wenn die Artikel über Widgets auf die Seite eigebunden sind :frowning: Emotion.php scheint der dazugehörige Controller zu sein.