# Plugin für Blocküberschreibung/Anpassung

**URL:** https://forum.shopware.com/t/plugin-fur-blockuberschreibung-anpassung/33613
**Category:** Programmierung
**Created:** [14. Januar 2016 um 16:42 UTC](https://forum.shopware.com/t/plugin-fur-blockuberschreibung-anpassung/33613 "2016-01-14T16:42:54Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![3pyTec](https://avatars.discourse-cdn.com/v4/letter/3/e495f1/32.png) [@3pyTec](https://forum.shopware.com/u/3pyTec)
#### Post date: [14. Januar 2016 um 16:42 UTC](https://forum.shopware.com/t/plugin-fur-blockuberschreibung-anpassung/33613/1 "2016-01-14T16:42:54Z")

</div>

Folgenden Block möchte ich mit einem Plugin überschreiben: Pfad: /themes/Frontend/Bare/widgets/checkout/info.tpl Inhalt: [code] {block name=“frontend\_index\_checkout\_actions\_notepad”}

- [{if $sNotesQuantity \> 0} {$sNotesQuantity} {/if}]({url controller=‘note’} “{”)  
{/block} [/code] Lösungsansatz: ` private function registerEvents() { $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Index', 'onPostDispatchFrontend' ); } public function onPostDispatchFrontend(Enlight\_Event\_EventArgs $arguments) { $controller = $arguments-\>getSubject(); $request = $controller-\>Request(); $response = $controller-\>Response(); $view = $controller-\>View(); if (!$request-\>isDispatched() || $response-\>isException() || !$view-\>hasTemplate()) { return; } $view-\>addTemplateDir($this-\>Path() . 'Views/'); $view-\>extendsTemplate('frontend/plugins/NAMEPLUGIN/index.php'); $view-\>addTemplateDir($this-\>Path() . 'Views/'); $view-\>extendsTemplate('frontend/plugins/NAMEPLUGIN/widgets/checkout/info.php'); } ` Wie muss die Verlinkung in: $view-\>extendsTemplate(‘frontend/plugins/NAMEPLUGIN/widgets/checkout/info.php’); gewählt werden?

---

<div class="post-metadata">

### Author: ![steinsoftware](https://avatars.discourse-cdn.com/v4/letter/s/b487fb/32.png) [@steinsoftware](https://forum.shopware.com/u/steinsoftware)
#### Post date: [15. Januar 2016 um 10:26 UTC](https://forum.shopware.com/t/plugin-fur-blockuberschreibung-anpassung/33613/2 "2016-01-15T10:26:10Z")

</div>

Was für ne Verlinkung? Also erstmal ist das nicht der Index-Controller sondern der Checkout-Controller. Event-Registrierung also eher: `Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_Chekcout` Dann kannst du auch den Kram einfach rausschmeißen: `if (!$request-\>isDispatched() || $response-\>isException() || !$view-\>hasTemplate()) { return; }` Dann reicht es eine Template-Datei hinzuzufügen wenn der Checkout aufgerufen wird: `$view-\>addTemplateDir($this-\>Path() . 'Views/'); $view-\>extendsTemplate('frontend/plugins/NAMEPLUGIN/widgets/checkout/info.tpl')` Diese Datei musst du nun nur noch anlegen. Einen Ordner Views auf der Ebene der Bootstrap anlegen und die weiteren Unterordnerhirarchie halt auch (frontend -\> dadrin plugins -\> dadrin NAMEPLUGIN etc.) In der Datei info.tpl steht dann sowas: `{extends file="parent:frontend/widgets/checkout/info.tpl"} {block name="frontend\_index\_checkout\_actions\_notepad"} //neuer Code oder leer lassen um den Block auszublenden... {/block}`

---

<div class="post-metadata">

### Author: ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)
#### Post date: [15. Januar 2016 um 10:31 UTC](https://forum.shopware.com/t/plugin-fur-blockuberschreibung-anpassung/33613/3 "2016-01-15T10:31:32Z")

</div>

[quote=“steinsoftware”]Was für ne Verlinkung? Also erstmal ist das nicht der Index-Controller sondern der Checkout-Controller. Event-Registrierung also eher: `Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_Chekcout` Dann kannst du auch den Kram einfach rausschmeißen: `if (!$request-\>isDispatched() || $response-\>isException() || !$view-\>hasTemplate()) { return; }` Dann reicht es eine Template-Datei hinzuzufügen wenn der Checkout aufgerufen wird: `$view-\>addTemplateDir($this-\>Path() . 'Views/'); $view-\>extendsTemplate('frontend/plugins/NAMEPLUGIN/widgets/checkout/info.tpl')` Diese Datei musst du nun nur noch anlegen. Einen Ordner Views auf der Ebene der Bootstrap anlegen und die weiteren Unterordnerhirarchie halt auch (frontend -\> dadrin plugins -\> dadrin NAMEPLUGIN etc.) In der Datei info.tpl steht dann sowas: `{extends file="parent:frontend/widgets/checkout/info.tpl"} {block name="frontend\_index\_checkout\_actions\_notepad"} //neuer Code oder leer lassen um den Block auszublenden... {/block}`[/quote] Hallo, soweit ich gesehen und gelesen habe (auch in der Shopware 5 - Dokus), sollte der Weg über $view-\>extendsTemplate nicht mehr verwendet werden, da er es ausschließt, dass man ein Plugin-Template im eigenen Theme überschreiben kann (diesen Weg sollte man nur noch bis Shopware Version 4 verwenden). Siehe hier: [https://developers.shopware.com/develop … ick-start/](https://developers.shopware.com/developers-guide/plugin-quick-start/) . Ebenso soll man exakt den Pfad und Dateinamen nehmen, wo die Datei, von der man ableiten möchte, liegt (bzgl. des Überschreibens von Plugin-Templates). Beste Grüße Sebastian

---

<div class="post-metadata">

### Author: ![3pyTec](https://avatars.discourse-cdn.com/v4/letter/3/e495f1/32.png) [@3pyTec](https://forum.shopware.com/u/3pyTec)
#### Post date: [15. Januar 2016 um 10:35 UTC](https://forum.shopware.com/t/plugin-fur-blockuberschreibung-anpassung/33613/4 "2016-01-15T10:35:07Z")

</div>

[quote=„sschreier“][quote=„steinsoftware“]Was für ne Verlinkung? Also erstmal ist das nicht der Index-Controller sondern der Checkout-Controller. Event-Registrierung also eher: `Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_Chekcout` Dann kannst du auch den Kram einfach rausschmeißen: `if (!$request-\>isDispatched() || $response-\>isException() || !$view-\>hasTemplate()) { return; }` Dann reicht es eine Template-Datei hinzuzufügen wenn der Checkout aufgerufen wird: `$view-\>addTemplateDir($this-\>Path() . 'Views/'); $view-\>extendsTemplate('frontend/plugins/NAMEPLUGIN/widgets/checkout/info.tpl')` Diese Datei musst du nun nur noch anlegen. Einen Ordner Views auf der Ebene der Bootstrap anlegen und die weiteren Unterordnerhirarchie halt auch (frontend -\> dadrin plugins -\> dadrin NAMEPLUGIN etc.) In der Datei info.tpl steht dann sowas: `{extends file="parent:frontend/widgets/checkout/info.tpl"} {block name="frontend\_index\_checkout\_actions\_notepad"} //neuer Code oder leer lassen um den Block auszublenden... {/block}`[/quote] Hallo, soweit ich gesehen und gelesen habe (auch in der Shopware 5 - Dokus), sollte der Weg über $view-\>extendsTemplate nicht mehr verwendet werden, da er es ausschließt, dass man ein Plugin-Template im eigenen Theme überschreiben kann (diesen Weg sollte man nur noch bis Shopware Version 4 verwenden). Ebenso soll man exakt den Pfad und Dateinamen nehmen, wo die Datei, von der man ableiten möchte, liegt (bzgl. des Überschreibens von Plugin-Templates). Beste Grüße Sebastian[/quote] Was schlägst du als Alternative vor?

---

<div class="post-metadata">

### Author: ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)
#### Post date: [15. Januar 2016 um 10:39 UTC](https://forum.shopware.com/t/plugin-fur-blockuberschreibung-anpassung/33613/5 "2016-01-15T10:39:50Z")

</div>

[quote=“3pyTec”][quote=“sschreier”][quote=“steinsoftware”]Was für ne Verlinkung? Also erstmal ist das nicht der Index-Controller sondern der Checkout-Controller. Event-Registrierung also eher: `Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_Chekcout` Dann kannst du auch den Kram einfach rausschmeißen: `if (!$request-\>isDispatched() || $response-\>isException() || !$view-\>hasTemplate()) { return; }` Dann reicht es eine Template-Datei hinzuzufügen wenn der Checkout aufgerufen wird: `$view-\>addTemplateDir($this-\>Path() . 'Views/'); $view-\>extendsTemplate('frontend/plugins/NAMEPLUGIN/widgets/checkout/info.tpl')` Diese Datei musst du nun nur noch anlegen. Einen Ordner Views auf der Ebene der Bootstrap anlegen und die weiteren Unterordnerhirarchie halt auch (frontend -\> dadrin plugins -\> dadrin NAMEPLUGIN etc.) In der Datei info.tpl steht dann sowas: `{extends file="parent:frontend/widgets/checkout/info.tpl"} {block name="frontend\_index\_checkout\_actions\_notepad"} //neuer Code oder leer lassen um den Block auszublenden... {/block}`[/quote] Hallo, soweit ich gesehen und gelesen habe (auch in der Shopware 5 - Dokus), sollte der Weg über $view-\>extendsTemplate nicht mehr verwendet werden, da er es ausschließt, dass man ein Plugin-Template im eigenen Theme überschreiben kann (diesen Weg sollte man nur noch bis Shopware Version 4 verwenden). Ebenso soll man exakt den Pfad und Dateinamen nehmen, wo die Datei, von der man ableiten möchte, liegt (bzgl. des Überschreibens von Plugin-Templates). Beste Grüße Sebastian[/quote] Was schlägst du als Alternative vor?[/quote] Hallo, das ist doch gut in der Doku anhand eines Beispiels beschrieben: [https://developers.shopware.com/develop … ick-start/](https://developers.shopware.com/developers-guide/plugin-quick-start/) . Es soll ganz einfach die Zeile $view-\>extendsTemplate(…) komplett weggelassen werden und der Pfad und Dateiname, wo die Datei, von der man ableiten möchte, komplett so übernommen werden - dadurch weiss das Plugin selbst, von wo es genau ableiten soll und von welchen Dateien es erben soll. Die Verwendung von $view-\>extendsTemplate(…) wird weder den Kunden noch Shopware freuen - da man dadurch jegliche Anpassung einer Templatedatei (tpl) eines Plugins innerhalb des eigenen Themes unterbindet. Beste Grüße Sebastian

---

<div class="post-metadata">

### Author: ![steinsoftware](https://avatars.discourse-cdn.com/v4/letter/s/b487fb/32.png) [@steinsoftware](https://forum.shopware.com/u/steinsoftware)
#### Post date: [15. Januar 2016 um 10:41 UTC](https://forum.shopware.com/t/plugin-fur-blockuberschreibung-anpassung/33613/6 "2016-01-15T10:41:13Z")

</div>

[quote]soweit ich gesehen und gelesen habe (auch in der Shopware 5 - Dokus), sollte der Weg über $view-\>extendsTemplate nicht mehr verwendet werden, da er es ausschließt, dass man ein Plugin-Template im eigenen Theme überschreiben kann (diesen Weg sollte man nur noch bis Shopware Version 4 verwenden). Siehe hier: [https://developers.shopware.com/develop](https://developers.shopware.com/develop) … ick-start/ .[/quote] Das scheint wohl so zu stimmen. Dann einfach das $view-\>extendsTemplate weglassen

---

<div class="post-metadata">

### Author: ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)
#### Post date: [16. Januar 2016 um 15:01 UTC](https://forum.shopware.com/t/plugin-fur-blockuberschreibung-anpassung/33613/7 "2016-01-16T15:01:28Z")

</div>

[quote=“steinsoftware”][quote]soweit ich gesehen und gelesen habe (auch in der Shopware 5 - Dokus), sollte der Weg über $view-\>extendsTemplate nicht mehr verwendet werden, da er es ausschließt, dass man ein Plugin-Template im eigenen Theme überschreiben kann (diesen Weg sollte man nur noch bis Shopware Version 4 verwenden). Siehe hier: [https://developers.shopware.com/develop](https://developers.shopware.com/develop) … ick-start/ .[/quote] Das scheint wohl so zu stimmen. Dann einfach das $view-\>extendsTemplate weglassen[/quote] Hallo, das scheint nicht nur “wohl” so zu stimmen, sondern wurde ja auch schon von Shopware selbst geschrieben (und dies soll man ja nicht erst seit ein paar Tagen so machen): [themes-und-design-f101/ladereihenfolge-von-template-informationen-falsch-t32198-10.html#p140218](http://forum.shopware.com/themes-und-design-f101/ladereihenfolge-von-template-informationen-falsch-t32198-10.html#p140218) . Beste Grüße Sebastian
