Plugin-Template über Plugin erweitern

Hallo an alle,

ich möchte gerne ein Plugin-Template (ganz konkret engine/Shopware/Plugins/Default/Frontend/AdvancedMenu/Views/frontend/advanced_menu/index.tpl) über ein Plugin anpassen.

Gibt es hierzu eine Anleitung/Best Practice? 

Ich habe es zwar nun mit Hängen und Würgen hinbekommen, das Template zu überschreiben, aber nicht zu erweitern. Mein Vorgehen:

  • Ich habe einen Ordner Views in meinem Plugin: engine/Shopware/Plugins/Local/Frontend/FSSupplierNavigation/Views/frontend/advanced_menu/index.tpl
  • Wenn ich nun in dieser Datei bspw. folgendes mache (Code A), hat das keinen Effekt.
  • Wenn ich das extends raus mache kann ich das Plugin überschreiben. Komischerweise erst, nachdem ich Advanced Menu neu installiert habe. Vermutlich irgendwas mit Reihenfolgen zu tun?

Freu mich über Feedback! Danke!

 

CODE A

{extends file="parent:frontend/advanced_menu/index.tpl"}
{block name="frontend_plugins_advanced_menu"}

    

    

{/block}

 

Zeig uns doch mal das Event, auf welches du dich anmeldest (subscribe) und wie deine Event-Listener Funktion aussieht.

Viele Grüße

Danke jetzt schonmal für Eure Mühe:

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

 

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

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

    }

Viele Grüße!

Hi, Das liegt Wahrscheinlich an der Reihenfolge da das AdvancedMenu auch einen PostDispatch hat.

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

Versuch mal deinem Event eine position (reihenfoge) mit zugeben, damit es nach dem advancedmenu ausgeführt wird.

 

$this->subscribeEvent(
     'Enlight_Controller_Action_PostDispatchSecure_Frontend',
     'addTemplateDir',
     100
);

 

1 „Gefällt mir“

Hallo! Vielen Danke! So hat es geklappt!