Plugin für die Einkaufswelten

Hallo Community,

ich erstelle gerade ein Plugin für die Einkaufswelt, in diesem Plugin sollen die Kategorien im Content als Navigation ausgegeben werden.

Mein Problem ist, wenn ich in der Bootstrap.php über $view->assign(‘lorem’, ‘Lorem ipsum dolor sit amet’); eine Variable mit einem String belege kommt keine Ausgabe {$lorem} in meiner *.tpl Datei.

Wie muss ich mein Code anpassen damit ich eine Ausgabe bekomme?

System:
Shopware 5.1.1
Professional Edition

Bootstrap.php:

 true,
            'update' => true,
            'enable' => true
        );
    }
 
    public function getLabel()
    {
        return 'Emotion Content Navigation';
    }
 
    public function getVersion()
    {
        return '1.0.0';
    }
 
    public function getInfo()
    {
        return array(
            'version' => $this->getVersion(),
            'autor'       => '',
            'copyright'   => '© 2016 ',
            'label' => $this->getLabel(),
            'supplier' => '',
            'description' => 'Content Navigation',
            'support' => '',
            'link' => ''
        );
    }
 
    public function install()
    {
        $component = $this->createEmotionComponent(array(
                    'name' => 'Content Navigation',
                    'description' => 'Content Navigation',
                    'template' => 'component_content_navigation_dw',
                    'cls' => 'content-navigation-dw'
        ));

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

        return true;
    }

    public function onFrontendPostDispatch(Enlight_Event_EventArgs $args)
    {
        $view = $args->getSubject()->View();
        $view->addTemplateDir($this->Path() . 'Views/');
        $view->extendsTemplate('emotion_components/widgets/emotion/components/component_content_navigation_dw.tpl');
        $view->assign('lorem', 'Lorem ipsum dolor sit amet');
    }

}

component_content_navigation_dw.tpl:

{block name="widget_emotion_content_navigation"}

    Test emotion Content Navi
    {$lorem}

{/block}

Vielen Dank im Voraus.

Gruß Holger

Du hast dich auf das Event

Enlight_Controller_Action_PostDispatch_Frontend_Index

registriert. Für die Einkaufswelten müsste es aber eher

Enlight_Controller_Action_PostDispatchSecure_Widgets_Campaign

sein. Schau dir mal das Beispiel-Plugin “Media Widget” an, das sollte helfen.

@Pixeljockey schrieb:

Du hast dich auf das Event

Enlight_Controller_Action_PostDispatch_Frontend_Index

registriert. Für die Einkaufswelten müsste es aber eher

Enlight_Controller_Action_PostDispatchSecure_Widgets_Campaign

sein. Schau dir mal das Beispiel-Plugin „Media Widget“ an, das sollte helfen.

Hallo Pixeljockey,

danke für deine Antwort, leider hat die Umstellung von 

Enlight_Controller_Action_PostDispatch_Frontend_Index

auf

Enlight_Controller_Action_PostDispatchSecure_Widgets_Campaign

kein Erfolg gebracht.

Es wird immer noch nichts ausgegeben.

Mein Code sieht jetzt so aus:

    public function install()
    {
        $component = $this->createEmotionComponent(array(
                    'name' => 'Content Navigation',
                    'description' => 'Content Navigation',
                    'template' => 'component_content_navigation_dw',
                    'cls' => 'content-navigation-dw'
        ));

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

        return true;
    }

    public function onFrontendPostDispatch(Enlight_Event_EventArgs $args)
    {
        $view = $args->getSubject()->View();
        $view->addTemplateDir($this->Path() . 'Views/');
        $view->extendsTemplate('emotion_components/widgets/emotion/components/component_content_navigation_dw.tpl');
        $view->assign('lorem', 'Lorem ipsum dolor sit amet');
    }

Ich hab mir auch das Beispiel angesehen, aber dort legen die nur ein „subscribeEvent“ an und dazu keine Funktion die im Frontend eine Ausgabe erzeugt.

Oder kann ich meine Variable in das $Data Array hinzufügen?

MFG Holger

Ich habe dazu mal eine Frage, wie registrier ich die custom Seiten (Shopseiten)

Ich habe eine Shopseite angelegt und möchte über ein Plugin aus einer SQL Tabelle Daten anzeigen.

Die Funktionen sind alle fertig und funktionieren aber ich bekomme das nur auf der Detailseite bzw. Index Seite angezeigt.

Sieht so aus im Moment
 

    public function onFrontendPostDispatch(Enlight_Event_EventArgs $args)
    {
        /** @var \Enlight_Controller_Action $controller */
        $controller = $args->get('subject');
        $view = $controller->View();

        $view->addTemplateDir( __DIR__. '/Views/responsive/');

        $articleId = (int)$args->getSubject()->Request()->sArticle;

        $sql
            = "SELECT id, products_groupid, products_model, products_groupmodel, products_design FROM s_articles_attributes WHERE articleID = '"
            . $articleId
            . "' AND (products_........