# Template Extends

**URL:** <https://forum.shopware.com/t/template-extends/43791>\
**Category:** Programmierung\
**Created:** [17. Februar 2017 um 05:44 UTC](https://forum.shopware.com/t/template-extends/43791 "2017-02-17T05:44:53Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Lisa83](https://avatars.discourse-cdn.com/v4/letter/l/5e9695/32.png) [@Lisa83](https://forum.shopware.com/u/Lisa83)\
**Post date:** [17. Februar 2017 um 05:44 UTC](https://forum.shopware.com/t/template-extends/43791/1 "2017-02-17T05:44:53Z")

</div>

Hallo,&nbsp;

ich habe ein Plugin welches die index/header,tpl um meta tags erweitert was mit dem Bare Theme auch wunderbar funktioniert.

Aber leider nur mit dem Bare theme. mit einem anderen theme tut es nicht, es wird einfach nichts angezeigt.

Nur wenn ich in dem „anderen“ theme in der original header.tpl datei folgendes ergänze in der &nbsp;ersten zeile:

{extends file=‚parent:frontend/index/header.tpl‘}  
&nbsp;

dann tut es aufeinmal.&nbsp;

Kann mir das jemand erklären? Im original Bare template gibt es ja diese Zeile auch nicht…

Danke, die

ratlose Lisa

---

<div class="post-metadata">

**Author:** ![derwunner](https://avatars.discourse-cdn.com/v4/letter/d/e5b9ba/32.png) [@derwunner](https://forum.shopware.com/u/derwunner)\
**Post date:** [17. Februar 2017 um 14:47 UTC](https://forum.shopware.com/t/template-extends/43791/2 "2017-02-17T14:47:16Z")

</div>

Hallo,

&nbsp;

das liegt daran, weil sich Dein anderes Theme XYZ nicht vom Bare Theme ableitet und damit ist man auch nicht an die Block Namen, die das Bare Theme vorgibt, gebunden. Sprich: In dem Theme XYZ&nbsp;heißen die Smarty Blocks anders. Dementsprechend wirkt sich auch Deine Überschreibung des Blocks im Plugin nicht aus, weil es den Block gar nicht im Theme XYZ gibt.

&nbsp;

&nbsp;

MFG

&nbsp;

derwunner

---

<div class="post-metadata">

**Author:** ![Lisa83](https://avatars.discourse-cdn.com/v4/letter/l/5e9695/32.png) [@Lisa83](https://forum.shopware.com/u/Lisa83)\
**Post date:** [18. Februar 2017 um 14:52 UTC](https://forum.shopware.com/t/template-extends/43791/3 "2017-02-18T14:52:28Z")

</div>

dachte ich zuerst auch, doch das andere theme ist von bare abgeleitet, enthält die gleichen tpl datein und der block den ich “appenden” will existiert auch! für mich sieht es so aus also ob mein plugin das bare theme verwendet obwohl dieses gar nicht aktiv ist?!

&nbsp;

wie muss man hier richtig vorgehen? wenn das andere theme die gleiche tpl datei hat wie Bare, und auch die gleichen blocks sollte ich die doch überschreiben können…

---

<div class="post-metadata">

**Author:** ![derwunner](https://avatars.discourse-cdn.com/v4/letter/d/e5b9ba/32.png) [@derwunner](https://forum.shopware.com/u/derwunner)\
**Post date:** [18. Februar 2017 um 19:48 UTC](https://forum.shopware.com/t/template-extends/43791/4 "2017-02-18T19:48:05Z")

</div>

Hast Du auch dein Template Directory eingebunden im StartDispatch Event oder in einem anderen frühen Event?

Hast Du auch die vom Bare Theme vorgegebene Verzeichnisstruktur eingehalten? Denn das klingt ganz für mich danach, als würde er Dein Smarty Template nicht finden. Wenn er das vom Plugin nicht findet, dann wird das vom Theme her genommen. Achte also wirklich genau darauf, dass Du dein Template, dass das Theme Template ersetzt, sich auch im selben Unterverzeichnis in Deinem Plugin befindet.

Also angenommen, dein Plugin heißt CompanyPlugin und die willst die Artikel Detailseite durch Dein eigenes Template ersetzen, bzw. überschreiben. Das Original vom Bare Theme liegt also unter frontend/detail/index.tpl. Dein Template müsste dann, unter der Annahme, dass Du vorher den Ordner /custom/plugins/CompanyPlugin/Resources/Theme als zusätzliches Template Directory hinzugefügt hast, dann müsste der Pfad zu deiner Artikel Detail Template Seite wie folgt lauten:

custom/plugins/CompanyPlugin/Resources/Theme/frontend/detail/index.tpl

---

<div class="post-metadata">

**Author:** ![Philipp\_Schuch](https://avatars.discourse-cdn.com/v4/letter/p/8797f3/32.png) [@Philipp\_Schuch](https://forum.shopware.com/u/Philipp_Schuch)\
**Post date:** [20. Februar 2017 um 07:32 UTC](https://forum.shopware.com/t/template-extends/43791/5 "2017-02-20T07:32:11Z")

</div>

Hallo,

wenn in dem Custom Theme der " **extends**" Befehl fehlt, dann greift die Datei auch nicht auf das Vererbungssystem zu. Die Datei überschreibt komplett die Datei aus allen vorherigen Ebenen. Alles was also davor erweitert wurde geht verloren. Ich vermute, dass das Theme nach den Plugins geladen wird und damit die Änderungen des Plugins überschreibt. Du kannst das prüfen, in dem Du mal in die **Theme.php** schaust und die Variable **$injectBeforePlugins** überprüfst.

Weitere Infos findest Du hier:  
[Getting started with Smarty](https://developers.shopware.com/designers-guide/smarty/#inheritance-and-plugin-templates)

Sonnige Grüße,  
Phil

---

<div class="post-metadata">

**Author:** ![Lisa83](https://avatars.discourse-cdn.com/v4/letter/l/5e9695/32.png) [@Lisa83](https://forum.shopware.com/u/Lisa83)\
**Post date:** [20. Februar 2017 um 20:38 UTC](https://forum.shopware.com/t/template-extends/43791/6 "2017-02-20T20:38:31Z")

</div>

Hallo Phil,

&nbsp;

vielen dank für deine Antwort. Das würde es komplett erklären… Kann ich dann also sagen das, dass problem beim Template liegt und nicht bei meinem Plugin?

&nbsp;

danke und liebe grüße

Lisa

---

<div class="post-metadata">

**Author:** ![derwunner](https://avatars.discourse-cdn.com/v4/letter/d/e5b9ba/32.png) [@derwunner](https://forum.shopware.com/u/derwunner)\
**Post date:** [21. Februar 2017 um 07:34 UTC](https://forum.shopware.com/t/template-extends/43791/7 "2017-02-21T07:34:41Z")

</div>

Die Methode&nbsp;Enlight\_Template\_Manager::addTemplateDir hat als letzten Parameter die Reihenfolge. Wenn ich richtig liege, dann könnte man das Plugin Theme also am Ende des Arrays anfügen und somit würde in der Vererbungsreihenfolge das Plugin wieder ganz oben stehen, oder?

---

<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:** [21. Februar 2017 um 07:37 UTC](https://forum.shopware.com/t/template-extends/43791/8 "2017-02-21T07:37:48Z")

</div>

> [@derwunner schrieb:](https://forum.shopware.com/profile/25468/derwunner "derwunner")
> 
> Die Methode&nbsp;Enlight\_Template\_Manager::addTemplateDir hat als letzten Parameter die Reihenfolge. Wenn ich richtig liege, dann könnte man das Plugin Theme also am Ende des Arrays anfügen und somit würde in der Vererbungsreihenfolge das Plugin wieder ganz oben stehen, oder?

Hallo,

nein, das verstehst du komplett falsch. Du könntest so maximal die Ladereihenfolge der Plugins beeinflussen - ob das Plugin oder das Theme an letzter Stelle steht, kann man nur mit **injectBeforePlugins** beeinflussen, wie von Philipp erwähnt.

Beste Grüße

Sebastian
