Event-Hook in Plugin für Artikel-Detailseite

Hallo Leute,

Ich hätte mal ein Problem, bei dem ich um Hilfe bitten würde.

Und zwar möchte ich auf der Artikeldetailseite etwas ausgeben, weswegen ich einen Subscriber gebaut habe

<?php namespace MyPlugin\Subscriber; use Enlight\Event\SubscriberInterface; class PostDispatchSubscriber implements SubscriberInterface { public static function getSubscribedEvents() { return [ 'Enlight_Controller_Action_PostDispatchSecure_Frontend_Detail' => 'onFrontendDetail' ]; } public function onFronendDetail(\Enlight\_Event\_EventArgs $args) { $view = $args-\>get('subject')-\>View(); $view-\>assign('mytext', 'Hallo Welt!'); } }

Ich hab den Subscriber auch in der services.xml registriert:

service id=„my_plugin.subscriber.post_dispatch_subscriber“ class=„MyPlugin\Subscriber\PostDispatchSubscriber“ tag name=„shopware.event_subscriber“/ /service

(Brackets entfernt, sonst spinnt das Forum rum…)

Es existiert auch eine Templatefile, die auch korrekt funktioniert, aber wenn ich den Aufruf {$mytext} mache, bleibt der leer.

Hat da jemand eine Idee, was ich machen kann?

Danke!

Hallo,

du musst deinen Resourcen Ordner zu den Template Resourcen hinzufügen

 'onFrontendDetail',
            'Theme_Inheritance_Template_Directories_Collected' => 'onCollectTemplateDir',
        ];
    }

    public function onFronendDetail(Enlight_Event_EventArgs $args)
    {
        $controller = $args->getSubject();
        /** @var Enlight_View_Default $view */
        $view = $controller->View();
        $view->assign('test', 'testemich');
    }

    /**
     * @param Enlight_Event_EventArgs $args
     */
    public function onCollectTemplateDir(Enlight_Event_EventArgs $args)
    {
        $dirs = $args->getReturn();
        $dirs[] = dirname( __DIR__ ) . '/Resources/views/';

        $args->setReturn($dirs);
    }
}

und dann z.B. dein Template unter MyPlugin/Resources/views/frontend/detail/index.tpl

{extends file="parent:frontend/detail/index.tpl"}

{block name="frontend_index_content"}
    {$test}
{/block}

Grüße Lukaschel

Hallo Lukaschel,

Ich füg den Templateordner generell schon hinzu und da klappt die Überschreibung auch…

Muss ich den nochmal in der Methode selbst hinzufügen oder wie?

Im Moment ist der schon drin wie hier beschrieben: https://developers.shopware.com/developers-guide/example-plugin/