Smarty Blocks Bug bei index/index.tpl und register/index.tpl Minimal Header & Footer

Hallo,

ich wundere mich mal wieder über das Verhalten der Smarty Blöcke in Verbindung mit dem Minimal Header / Footer der Checkout Seiten. In kurzen Worten:

frontend/register/index.tpl ist nicht in der Lage in frontend/index/index.tpl gemachte Anpassungen an Blöcken (explizit: frontend_index_footer) wieder zu überschreiben, sodass es zu einer fehlerhaften/doppelten Darstellung des Footers + minimal Footers kommt.

Beispiel:

//Template Datei: frontend/index/index.tpl

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

{block name="frontend_index_footer" prepend}
    Custom Content
{/block}

Nun wird der normale Footer zusätzlich zum Minimal Footer im Checkout angezeigt, da das register/index.tpl nicht in der Lage ist durch

//Bare Datei: frontend/register/index.tpl

{extends file="frontend/index/index.tpl"}

// Code weggelassen...

{* Footer *}
{block name="frontend_index_footer"}
    {if !$theme.checkoutFooter || $sTarget == "account"}
        {$smarty.block.parent}
    {else}
        {block name="frontend_index_register_footer"}
            {include file="frontend/index/footer_minimal.tpl"}
        {/block}
    {/if}
{/block}

// Code weggelassen...

die durch Prepend hinzugefügten Inhalte aus der index/index.tpl zu überschreiben. Ändere ich allerdings den Code so um, dass ich mit block.parent das Verhalten von append/prepend simuliere:

//Template Datei: frontend/index/index.tpl

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

{block name="frontend_index_footer"}
    Custom Content
    {* simuliere prepend *}
    {$smarty.block.parent}
{/block}

Nun kann man durch eine eigene register/index.tpl das ganze überschreiben und das MUSS man dann auch:

//Template Datei: frontend/register/index.tpl

{extends file="parent:frontend/register/index.tpl"}

{* Footer *}
{block name="frontend_index_footer"}
        {$smarty.block.parent}
{/block}

 

 

Kann es daher sein, dass es hiermit einen BUG innerhalb der Smarty-Blöcke gibt?

Hi zenit,

das es Probleme bei der Verwendung von append und prepend unter bestimmten Umständen geben kann, ist bereits schon länger bekannt. Dies ist in der Tat ein Bug in Smarty (zumindest in der Version, die in Shopware genutzt wird). Wir empfehlen daher seit einiger Zeit nur noch {$smarty.block.parent} zu nutzen. Damit bist du auf jeden Fall auf der sicheren Seite. 

Viele Grüße aus Schöppingen

cool Michael Telgmann

1 Like

Top, danke für die Antwort, dann weiß ich Bescheid Thumb-Up