Smarty: Block "prepend" funktioniert nicht (wird immer als "append" verarbeitet)

Hallo,

ich habe ein Problem mit Smarty. Ich möchte gerne in der Kategorienavigation links die aktuell nicht ausgewählten
Oberkategorien ausblenden.

Also habe ich ein eigenes Theme von Responsive abgeleitetet und eine Smarty Datei /frontent/index/sidebar-categories.tpl

erzeugt. Ich wollte nun an den Block „frontend_index_categories_left_entry“ vorne etwas anfügen, also mit

{block name=„frontend_index_categories_left_entry“ prepend}

Aber egal was ich mache, mein Smarty code wird IMMER an den Block angehängt. Es wir also immer
als append verarbeitet. Auch wenn ich den Block ganz überschreiben möchte mit

{block name=„frontend_index_categories_left_entry“}

wird immer nur als „append“ verarbeitet.

Woran könnte das liegen? Ich bin gerade am verzweifeln.

Hier der volle Code (momentan wird nur eine Debugmessage ausgegeben):

 

{extends file="parent:frontend/index/sidebar-categories.tpl"}


{block name="frontend_index_categories_left_entry" prepend}

 DEBUG: 
 level = {$level},
 flag = {$category.flag},
 check = {(($category.flag == false && ($level === 0)) === false)},
 {$category.description}]


{/block}

 

@frimipiso schrieb:

Hier der volle Code (momentan wird nur eine Debugmessage ausgegeben):

 

{extends file=„parent:frontend/index/sidebar-categories.tpl“}

{block name=„frontend_index_categories_left_entry“ prepend}

DEBUG:
level = {$level},
flag = {$category.flag},
check = {(($category.flag == false && ($level === 0)) === false)},
{$category.description}]

{/block}

Hallo,

Shopware empfiehlt, in solchen Fällen {$smarty.block.parent} zu nutzen, also:

{extends file="parent:frontend/index/sidebar-categories.tpl"}

{block name="frontend_index_categories_left_entry"}
 DEBUG: 
 level = {$level},
 flag = {$category.flag},
 check = {(($category.flag == false && ($level === 0)) === false)},
 {$category.description}]

{$smarty.block.parent}
{/block}

Beste Grüße

Sebastian

1 Like

Danke Sebastian,

ich werde es morgen testen. Allerdings schlägst Du vor den Block zu überschreiben.

{block name="frontend_index_categories_left_entry"}

Wenn ich das versuche, wird ebenfalls ein append ausgeführt. Ich vermute, dass ich auf diese 
Weise den Parent Block zweimal ausführe und dazwischen meinen Code.

Mal schauen …

Gruss,

Jens

@frimipiso schrieb:

Danke Sebastian,

ich werde es morgen testen. Allerdings schlägst Du vor den Block zu überschreiben.

{block name=“frontend_index_categories_left_entry”}

Wenn ich das versuche, wird ebenfalls ein append ausgeführt. Ich vermute, dass ich auf diese 
Weise den Parent Block zweimal ausführe und dazwischen meinen Code.

Mal schauen …

Gruss,

Jens

Hallo,

nein das siehst du falsch, der Block wird in dem Sinne nicht überschrieben, {$smarty.block.parent} steht sozusagen dafür “bitte füge an dieser Stelle den originalen Inhalt des Blocks ein”. Deshalb kann man es problemlos als Ersatz zu prepend und append einsetzen und es wird sogar von Shopware empfohlen, das man eher dies einsetzen soll.

Andernfalls würde ich mal alle installierten Plugins deaktivieren und den kompletten Shop Cache (inklusive Theme- und Backend - Cache) leeren, vielleicht passt ja ein Plugin auch den Block an oder überschreibt ihn.

Beste Grüße

Sebastian

1 Like

Nochmal danke! Es funktioniert jetzt.

Zuerst hat’s nicht geklappt. Dann habe ich ein Datenbankbackup gemacht und nochmal den
Installer aufgerufen (**deinedomain.de/recovery/install) **und die Datenbank wieder eingespielt.

Irgendetwas hing total schief. Jetzt geht es mit Sebastian’s Tipp!