# plugin development - template uberschreiben nur fur controller

**URL:** <https://forum.shopware.com/t/plugin-development-template-uberschreiben-nur-fur-controller/55137>\
**Category:** Programmierung\
**Created:** [12. September 2018 um 22:29 UTC](https://forum.shopware.com/t/plugin-development-template-uberschreiben-nur-fur-controller/55137 "2018-09-12T22:29:17Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sition](https://avatars.discourse-cdn.com/v4/letter/s/df705f/32.png) [@Sition](https://forum.shopware.com/u/Sition)\
**Post date:** [12. September 2018 um 22:29 UTC](https://forum.shopware.com/t/plugin-development-template-uberschreiben-nur-fur-controller/55137/1 "2018-09-12T22:29:17Z")

</div>

Hallo,

Für ein Plugin mit eigenem Controller / View wollen wir das Frontend / listing / product-box / box-big-image.tpl wiederverwenden  
Aber wir wollen nur die box-big-image.tpl überschreiben, wenn der neue custom Controller aktiv ist, nicht auf dem listing-Controller.

Wenn wir big-image.tpl erweitern / überschreiben, ist dies auch auf der category-seite&nbsp;sichtbar.

Gibt es eine möglichkeit, die tpl nur für einen bestimmten Controller zu erweitern?

Fur das template-registration brauchen wir jetzt:

```
/**
     * {@inheritdoc}
     */
    public static function getSubscribedEvents()
    {
        return [
            'Enlight_Controller_Action_PreDispatch' => 'onPreDispatch'
        ];
    }

    public function onPreDispatch()
    {
        $this->templateManager->addTemplateDir($this->pluginDirectory . '/Resources/views');
    }

```

Können wir nur unseren benutzerdefinierten Controller abonnieren?

---

<div class="post-metadata">

**Author:** ![Moritz\_Naczenski](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/moritz_naczenski/32/7792_2.png) [@Moritz\_Naczenski](https://forum.shopware.com/u/Moritz_Naczenski)\
**Post date:** [13. September 2018 um 04:44 UTC](https://forum.shopware.com/t/plugin-development-template-uberschreiben-nur-fur-controller/55137/2 "2018-09-13T04:44:08Z")

</div>

Du könntest dich bspw. nur auf den Controller registrieren, statt auf alles was im Frontend passiert und da dein Template registrieren.

Also&nbsp;Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_MyController.

---

<div class="post-metadata">

**Author:** ![Sition](https://avatars.discourse-cdn.com/v4/letter/s/df705f/32.png) [@Sition](https://forum.shopware.com/u/Sition)\
**Post date:** [13. September 2018 um 09:44 UTC](https://forum.shopware.com/t/plugin-development-template-uberschreiben-nur-fur-controller/55137/3 "2018-09-13T09:44:27Z")

</div>

Hallo Moritz,  
Danke!. Leider sind wir immer noch mit der template-vererbung beschäftigt.

Unser Fall:  
Wir haben 2 Plugins:  
MyPluginABC und MyPluginXYZ

MyPluginABC hat eine template-struktur: Resources\> views\> frontend\> plugins\> my\_plugin\_abc\> abc.tpl was ein bare tpl erweitert.

Mit MyPluginXYZ (mit benutzerdefiniertem Controller usw.) wollen wir einen teil der tpl-Datei wie oben erwähnt überschreiben.  
MyPluginXYZ hat eine Template-Struktur: Resources\> views\> frontend\> mypluginxyz  
Wie können wir abc.tpl überschreiben?

Sollten wir das hier platzieren:  
a) Resources \> views\> Frontend\> my\_plugin\_abc\> abc.tpl  
oder  
b) Resources\> views \> Frontend\> Plugins\> my\_plugin\_abc\> abc.tpl  
oder  
c) Resources\> views\> Frontend\> my\_plugin\_abc\> my\_plugin\_abc\> abc.tpl  
oder  
c) Resources\> views\> Frontend\> my\_plugin\_abc\> Plugins\> my\_plugin\_abc\> abc.tpl

Durch das subription von Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_MyPluginXYZ möchten wir nur überschreiben, wenn der controller geladen ist.

Und wie können wir verwalten, welche Vorlage zuerst geladen wird und in welcher Sekunde?

---

<div class="post-metadata">

**Author:** ![bquarta](https://avatars.discourse-cdn.com/v4/letter/b/4af34b/32.png) [@bquarta](https://forum.shopware.com/u/bquarta)\
**Post date:** [15. September 2018 um 14:31 UTC](https://forum.shopware.com/t/plugin-development-template-uberschreiben-nur-fur-controller/55137/4 "2018-09-15T14:31:24Z")

</div>

Hallo Sition,

klingt etwas schwindelerregend 😃

Hast du mal probiert das PluginXYZ, welches das Teile des PluginsABC überschreiben soll generell später zu laden?

Wenn du deine Events registrierst gibt es einen letzten optionalen Parameter:  
subscribeEvent($event, $listener, $position = null)

Wenn du nun also deine Events registrierst und bei PluginABC auf den Event eine niedrigere Position angibst wie auf PluginXYZ, dann müsste letzteres Plugin auch erst seine Arbeit verrichten, wenn ersteres schon geladen wurde.
