Block in detail/tabs/description.tpl lässt sich nicht überschreiben

Hallo zusammen,

ich habe folgendes Problem, ich versuche in meinem Theme (welches von Responsive erbt) den Block frontend_detail_description_properties zu überschreiben.

Dieser sieht im Original so aus:

 

 {\* Properties \*} {block name='frontend\_detail\_description\_properties'} {if $sArticle.sProperties} 


 {foreach $sArticle.sProperties as $sProperty} | {\* Property label \*} {block name='frontend\_detail\_description\_properties\_label'} {$sProperty.name|escape}: | {/block} {\* Property content \*} {block name='frontend\_detail\_description\_properties\_content'} {$sProperty.value|escape} | {/block}
 {/foreach} 

 {/if} {/block}

 

Im Detail geht es mir dabei darum, die Eigenschaften vom Set und den Set-Artikeln anzeigen zu lassen, die hinterlegt sind. Normalerweise werden immer nur die Eigenschaften des Sets oder des Artikels, je nachdem, angezeigt, aber nicht alle. Außerdem sollen Bilder statt Eigenschaften angezeigt werden, falls hinterlegt.

Btw für die Implementation der Sets benutze ich das Set-Artikel Plugin der Repertus GmbH.

Aber um die Art der Modifikation geht es bei meiner Frage eigtl. gar nicht, da das Problem eher grundsätzlicher Natur ist. 

Wenn ich nun versuche den Block als Ganzes in detail/index.tpl in meinem Theme zu ersetzen, passiert nichts.

Das ist mein Code:

 

 {block name='frontend\_detail\_description\_properties'} {if $sArticle.sProperties} 


 {foreach $sArticle.sProperties as $sProperty} | {$sProperty.name|escape}: | {foreach $sProperty.values as $fkey =\> $fvalue} {if ($sProperty.media[$fkey].source)} <imcg src="%7B%24sProperty.media%5B%24fkey%5D.source%7D" alt="{$sProperty.name}" width="95"></imcg> {else} {$sProperty.value|escape} {/if} {/foreach} |
 {/foreach} 
 {if isset($sArticle.tonurSetArticleItems) && $sArticle.tonurSetArticleItems|@count \> 0} {foreach from=$sArticle.tonurSetArticleItems item=setItem} 

 {foreach $setItem.sProperties as $sProperty} | {$sProperty.name|escape}: | {$sProperty.value|escape} |
 {/foreach} 
 {/foreach} {/if} 
 {/if} {/block}

 

In tonurSetArticleItems stecken die Setartikel. Nur passiert eben nichts, wenn ich diesen Code in die index.tpl einfüge. Der Code der ausgegeben wird, ist der aus dem geerbten Theme.

Wenn ich jedoch nur einen Subblock davon bearbeite:

 

 {block name='frontend\_detail\_description\_properties\_content'} {foreach $sProperty.values as $fkey =\> $fvalue} {if ($sProperty.media[$fkey].source)} <imcg src="%7B%24sProperty.media%5B%24fkey%5D.source%7D" alt="{$sProperty.name}" width="95"></imcg> {else} {$sProperty.value|escape} {/if} {/foreach} | {/block}

 

funktioniert das anstandslos.

Habe ich beim Theming was falsch verstanden oder woran kann das liegen?

 

Die Imagetags hab ich absichtlich falsch geschrieben, da ich mit der Formatierung hier im Forum noch nicht so vertraut bin und die dann meinen Beitrag zerlegt hätten.

 

Vielen Dank im Voraus für eure Hilfe!

 

MFG

Pasa

Ich würde mal zwei Dinge versuchen:

  1. Würde ich die Änderung in Deinem Theme nicht in der index.tpl sondern mit der selben Pfadstruktur wie vom übergeordnete (Bare-)Theme machen
    Also eine Datei THEME-VERZEICHNIS/frontend/detail/tabs/description.tpl erstellen mit folgendem Inhalt:

    {extends file=“parent:frontend/detail/tabs/description.tpl”}

    {block name=‘frontend_detail_description_properties’}
    {if $sArticle.sProperties}

                 {foreach $sArticle.sProperties as $sProperty}
                     
                         {$sProperty.name|escape}:
                         
                             {foreach $sProperty.values as $fkey => $fvalue}
                                 {if ($sProperty.media[$fkey].source)}
                                     
                                 {else}
                                     {$sProperty.value|escape}
                                 {/if}
                             {/foreach}
                         
                     
                 {/foreach}
             
             {if isset($sArticle.tonurSetArticleItems) && $sArticle.tonurSetArticleItems|@count > 0}
                 {foreach from=$sArticle.tonurSetArticleItems item=setItem}
                     
                         {foreach $setItem.sProperties as $sProperty}
                             
                                 {$sProperty.name|escape}:
                                 
                                         {$sProperty.value|escape}
                                 
                             
                         {/foreach}
                     
                 {/foreach}
             {/if}
         
     {/if}
    

    {/block}

  2. Wenn das noch nicht hilft, würde ich prüfen, ob Dein Set-Artikel Plugin evtl. auch schon genau diesen oder einen übergeordneten Block überschreibt. Also vielleicht einfach mal kurz das Plugin deaktivieren und schauen, ob Deine Änderung dann sichtbar wird.

Hallo LuckySilence,

vielen Dank für deine Antwort!

Leider hat beides zu keinem anderen Ergebnis geführt.

Wenn ich Änderungen direkt in der THEME-VERZEICHNIS/frontend/detail/tabs/description.tpl vornehme, ist gar keine Änderung sichtbar. Das funktioniert irgendwie nur, wenn ich etwas in der THEME-VERZEICHNIS/frontend/detail/index.tpl ändere.

Auch bei deaktiviertem Plugin ändert sich daran leider nichts.

 

Vielleicht hast du oder jemand anders noch Ideen, wie man da ansonsten vorgehen könnte.

 

Beste Grüße,

Pasa

Ich glaube nicht, dass es was bringt, aber Du könntest mal ausprobieren, die Theme-Option $injectBeforePlugins explizit auf false zu setzen.
Hinterher dann das Theme neu zuweisen/kompilieren.

Ist hier beschrieben: https://developers.shopware.com/designers-guide/smarty/#inheritance-and-plugin-templates

Der “Notfall-Plan” wäre noch, den übergeordneten Block {block name=“frontend_detail_description”} zu überschreiben.
Dann musst Du halt einen Berg Code mitkopieren, der eigentlich nicht relevant ist.

Hallo LuckySilence,

nochmals danke für deine Antwort! 

Ich habe $injectBeforePlugins auf false gesetzt und den gesamten Block überschrieben. Nichts von beidem hat funktioniert.

Nichts was ich in  frontend_detail_description_properties reinschreibe, wird ausgegeben, was jedoch explizit in frontend_detail_description_properties_content drin steht, wird ausgegeben.

 

Woran könnte das nur liegen?

 

Beste Grüße,

Pasa