# Verständnisfrage zur Nutzung von $smarty.block.parent um Blockinhalt zu manipulieren

**URL:** <https://forum.shopware.com/t/verstandnisfrage-zur-nutzung-von-smarty-block-parent-um-blockinhalt-zu-manipulieren/53102>\
**Category:** Allgemein\
**Created:** [25. Mai 2018 um 11:42 UTC](https://forum.shopware.com/t/verstandnisfrage-zur-nutzung-von-smarty-block-parent-um-blockinhalt-zu-manipulieren/53102 "2018-05-25T11:42:49Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![MisterTabasco](https://avatars.discourse-cdn.com/v4/letter/m/a88e4f/32.png) [@MisterTabasco](https://forum.shopware.com/u/MisterTabasco)\
**Post date:** [25. Mai 2018 um 11:42 UTC](https://forum.shopware.com/t/verstandnisfrage-zur-nutzung-von-smarty-block-parent-um-blockinhalt-zu-manipulieren/53102/1 "2018-05-25T11:42:49Z")

</div>

Liebe Community,

angenommen ich erweitere die Tabs der Produktdetailseite (frontend/detail/tabs.tpl) um einen weiteren Tab und entsprechend Inhalt.

Beispiel für das Setzen meines Inhalts an die erste Stelle des ersten Reiters:

```
{extends file="parent:frontend/detail/tabs.tpl}

{* Tab Content *}
{block name="frontend_detail_tabs_content_inner"}
  
  {* meinCustomContent *}
  {file include="frontend/detail/meinCustomContent.tpl}
  
  {$smarty.block.parent}
{/block}

```

Das habe ich auch soweit verstanden und es funktioniert (dazu gibt es ja auch entsprechende Tutorials)

Nun möchte der Kunde seinen „CustomContent“ aber zwischen den beiden voreingestellten Tabs&nbsp;„Beschreibung“ und „Bewertungen“ haben.&nbsp;  
Ich ging davon aus, das würde funktionieren:  
&nbsp;

```
{* Tab Content *}
{block name="frontend_detail_tabs_content_inner"}

  {* Description container *}
  {block name="frontend_detail_tabs_content_description"}
    {$smarty.block.parent}
  {/block}

  {* meinCustomContent container *}
  {file include="frontend/detail/meinCustomContent.tpl}

  {* Rating container *}
  {block name="frontend_detail_tabs_content_rating"}
    {$smarty.block.parent}
  {/block}

{/block}

```

&nbsp;

Dann erscheinen die div-container „tab–container“ doppelt im Quelltext. Die Zuordnung des Inhalts zu den Reitern stimmt dadurch auch nicht mehr.  
Es funktioniert nur, wenn man den ganzen Code aus den nötigen&nbsp;Blöcken des Bares zwischen die Blöcke meiner Templatedatei (wo jetzt das $smarty.block.parent steht) einfügt.  
Ich dachte, man könne $smarty.block.parent verwenden, um eben nicht den ganzen Code hineinkopieren zu müssen. Als ein&nbsp;Verweis auf den Inhalt des Blocks aus dem Bare, damit es updatesicher bleibt etc.

PS: Ich habe kein Plugin gefunden, das zufällig auch genau diese Blöcke versucht anzusprechen.

&nbsp;

Wer kann mich aufklären?^^  
&nbsp;

---

<div class="post-metadata">

**Author:** ![sonic](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sonic/32/25728_2.png) [@sonic](https://forum.shopware.com/u/sonic)\
**Post date:** [25. Mai 2018 um 11:52 UTC](https://forum.shopware.com/t/verstandnisfrage-zur-nutzung-von-smarty-block-parent-um-blockinhalt-zu-manipulieren/53102/2 "2018-05-25T11:52:36Z")

</div>

Kurz und knapp: So nicht&nbsp; ![Wink](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/b3785da0cbf2c8566cb535dcf55b2730b5224899.png "Wink")  
Du kannst nicht einen Block überschreiben und die darin enthaltenen Unter-Blöcke wieder includen.  
Du includest zwei mal den parentblock gekapselt mit jeweils einer neuen Definition der Unterblöcke --\> falsch.  
smarty.block.parent gibt den ganzen Parentblock aus.  
Wenn Du also etwas zwischen diese beiden Blöcke setzt, wählst Du EINEN von beiden aus und setzt deinen Inhalt HINTER smarty.block.parent IN “frontend\_detail\_tabs\_content\_description” ODER VOR smarty.block.parent IN “frontend\_detail\_tabs\_content\_rating”. Den “Übergeordneten” Block “frontend\_detail\_tabs\_content\_inner” gibts Du dann nicht an, da Du den ja nicht änderst.

Edit: Also so denken: Ich setzte meinen Inhalt nicht ZWISCHEN zwei Blöcke, sondern am ENDE oder ANFANG einer der beiden Blöcke.

---

<div class="post-metadata">

**Author:** ![MisterTabasco](https://avatars.discourse-cdn.com/v4/letter/m/a88e4f/32.png) [@MisterTabasco](https://forum.shopware.com/u/MisterTabasco)\
**Post date:** [25. Mai 2018 um 12:17 UTC](https://forum.shopware.com/t/verstandnisfrage-zur-nutzung-von-smarty-block-parent-um-blockinhalt-zu-manipulieren/53102/3 "2018-05-25T12:17:42Z")

</div>

Vielen Dank für die schnelle Antwort!

Ok, das würde funktionieren, geb ich dir recht. Der Übersicht halber&nbsp;fänd ich es nur schöner, es „dazwischen“ zu schreiben und somit den von mir gewünschten Block zu erweitern.

$smarty.block.parent bezieht sich in diesem Fall also auf&nbsp;„frontend\_detail\_tabs\_content\_inner“, richtig?

Falls das so ist, macht es natürlich keinen Sinn, was ich da mache. Ich dachte, $smarty.block.parent bezieht sich immer nur auf den Block, in dem es drin steht. Gibt es dafür denn keine Lösung? Wie zum Beispiel $smarty.block.child?^^ Hab das gerade mal spaßeshalber ausprobiert, hat aber nicht funktioniert.

---

<div class="post-metadata">

**Author:** ![sonic](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sonic/32/25728_2.png) [@sonic](https://forum.shopware.com/u/sonic)\
**Post date:** [25. Mai 2018 um 12:24 UTC](https://forum.shopware.com/t/verstandnisfrage-zur-nutzung-von-smarty-block-parent-um-blockinhalt-zu-manipulieren/53102/4 "2018-05-25T12:24:57Z")

</div>

Da sind schon einige drüber gestolpert - musste ich auch erst verstehen&nbsp; ![Wink](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/b3785da0cbf2c8566cb535dcf55b2730b5224899.png "Wink")  
Der “erste” Block zählt, alles was darin kommt, “überschreibt” den Block, und “parent” ist der Originalinhalt, der wieder eingefügt wird.&nbsp;  
Mir ist auch kein anderer Weg bekannt - immer auf der untersten Ebene arbeiten, was Blöcke betrifft.  
Wieder Unteblöcke “rauspicken” geht (leider) nicht.  
Du musst halt immer so denken: Ich will nichts **zwischen Etwas** &nbsp;setzen, sondern **hinter** oder **vor** &nbsp;Etwas - dann geht es gut mit smarty&nbsp; ![Wearing-Sunglasses](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/301eaa4db0af1251d93dae7904e5b71a4b15e729.png "Wearing-Sunglasses")  
&nbsp;

---

<div class="post-metadata">

**Author:** ![MisterTabasco](https://avatars.discourse-cdn.com/v4/letter/m/a88e4f/32.png) [@MisterTabasco](https://forum.shopware.com/u/MisterTabasco)\
**Post date:** [25. Mai 2018 um 12:29 UTC](https://forum.shopware.com/t/verstandnisfrage-zur-nutzung-von-smarty-block-parent-um-blockinhalt-zu-manipulieren/53102/5 "2018-05-25T12:29:22Z")

</div>

Vielen Dank für deine ausführliche Erklärung und deine Zeit! Hat mich echt gefreut =D

Und hab auch noch gut was dazugelernt^^ Danke!

Einen schönen sonnigen Freitag noch 😉

---

<div class="post-metadata">

**Author:** ![Larineso](https://avatars.discourse-cdn.com/v4/letter/l/b5e925/32.png) [@Larineso](https://forum.shopware.com/u/Larineso)\
**Post date:** [20. Juli 2018 um 18:13 UTC](https://forum.shopware.com/t/verstandnisfrage-zur-nutzung-von-smarty-block-parent-um-blockinhalt-zu-manipulieren/53102/6 "2018-07-20T18:13:12Z")

</div>

Gibt es denn keine andere Möglichkeit die Positionierung der Blocks zu beeinflussen ohne alle anderen Blocks auf der selben Ebene aus dem Bare-Theme zu kopieren und im eigenen Theme wieder einzufügen? Bei Magento gibt es beispielsweise die Möglichkeit mit before="" oder after="" die Positionierung zu beeinflussen. Das macht den Code deutlich lesbarer. Oder gibt es keine anderen Möglichkeit als, um beim oberen Beispiel zu bleiben, die Blöcke “frontend\_detail\_tabs\_content\_description” und “frontend\_detail\_tabs\_content\_rating” aus dem Bare-Theme im eigenen Theme einzufügen?
