Plugin Template überschreiben ohne extendsTemplate()

Laut https://developers.shopware.com/develop … ate-guide/ soll $view->extendsTemplate(…) nicht mehr verwendet werden um die Plugintemplates updatefähig zu halten. Aber wo genau liegt der Vorteil? Bisher sah es in meinen Plugins so aus: //... $view-\>addTemplateDir($this-\>Path().'Views/'); $view-\>extendsTemplate('frontend/plugins/verign\_test/example.tpl'); Und in example.tpl dann: {block name='irgendein\_block' append}...{/block} Wenn ich es richtig verstanden habe, soll es bei Shopware 5 dann wie folgt aussehen: //... $view-\>addTemplateDir($this-\>Path().'Views/'); Views/frontend/detail/index.tpl: {extends file="parent:frontend/detail/index.tpl"} {block name="irgendein\_block" append} {include file="frontend/plugins/verign\_test/example.tpl"} {/block} Der Inhalt von Views/frontend/plugins/verign_test/example.tpl dann wie bisher. In beiden Fällen kann man in seinem Template die example.tpl anlegen und den Inhalt überschreiben. Beim neuen Weg muss ich eine Datei inklusive Ordnerstruktur mehr anlegen und habe mir damit eine Zeile in der Bootstrap gespart. Wo genau liegt der Vorteil beim neuen Weg?

Da muss es doch etwas geben, das ich bisher übersehen habe!

Hi, [quote=“dirk_designverign”]Wenn ich es richtig verstanden habe, soll es bei Shopware 5 dann wie folgt aussehen: {block name="irgendein\_block" append} {include file="frontend/plugins/verign\_test/example.tpl"} {/block} [/quote] Wenn Du den Inhalt von irgendein_block extern lagern willst und in detail/index.tpl einbauen willst - ja so ist das richtig. Der richtige Weg ist jetzt aber zu gucken, welche Datei du eig. erweitern willst. Wenn Du z.b. die footer.tpl erweitern willst, dann ist jetzt der Weg in deinem Plugin …/frontend/index/footer.tpl anzulegen, in dieser dann über {extends file=“parent:frontend/index/footer.tpl”} den Verweis setzen und anschließend den gewünschten Block setzen. Du musst also nicht eine extra tpl includen wie in deinem Beispiel oben. Dadurch hast Du genauso viel Dateien wie innerhalb von SW4, eine deutlich bessere eigene Struktur der Daten und wie im Wiki gesagt: “… otherwise the plugin template cannot be overwritten by other templates.” Schöne Grüße, Niklas

Vielleicht noch ein Beispiel: Angenommen ich möchte ein Plugin schreiben, dass irgendwas über dem Footer hinzufügt. Also erstelle ich eine frontend/index/footer.tpl: {extends file='parent:frontend/index/footer.tpl'} {block name='frontend\_index\_footer\_menu' prepend} Irgendwas {/block} Jetzt hat der Kunde aber sein eigenes Footermenü und dementsprechend in seinem Template auch eine frontend/index/footer.tpl: {extends file='parent:frontend/index/footer.tpl'} {block name='frontend\_index\_footer\_menu'} Pretty Footer {/block} Damit wird das Plugin nicht angezeigt. Hätte ich eine frontend/mein_plugin/irgendwas.tpl angelegt mit: {block name='frontend\_index\_footer\_menu' prepend} Irgendwas {/block} Und diese per extendsTemplate eingebunden, würde alles noch funktionieren.

:cry:

Ist eben in der Hierarchie so, so hat man als Template-Entwickler oder Kunde selbst immer noch die Möglichkeit die grundsätzlichen Blöcke zu beeinflussen - trotz Plugin. Ist doch in der Kompilierungsreihenfolge der LESS Dateien genauso, am Ende kommt das Theme. Ich kann es gerade nicht ausprobieren, aber wenn du statt überschreiben append oder prepend an dem Footerblock machen würdest, würde Dein Block doch definitiv erscheinen -nur nicht eben überschreiben. Probier das doch nochmal, mit Cache leeren und Theme neu kompilieren, und mal gucken wie sich die Blöcke verhalten. Schöne Grüße, Niklas

[quote]Ich kann es gerade nicht ausprobieren, aber wenn du statt überschreiben append oder prepend an dem Footerblock machen würdest, würde Dein Block doch definitiv erscheinen -nur nicht eben überschreiben.[/quote] :thumbup:

Ok, also doch weiter extendsTemplate… Danke!