Eigenen Smarty Block erstellen

Hallo zusammen,

ich habe nun jede Menge im Netz gelesen, wie man die bestehenden Smarty-Blocks mit eigenem Inhalt erweitert, aber ich finde keine Information darüber wie man einen eigenen Smarty Block erstellt.

Hintergrund ist der Folgende: Ich möchte gerne beim Checkout „theme/bare/frontend/register/index.tpl“ einen neuen Block namens „tester“ einfügen.
Ich benutze derzeit ein Plugin, welches Inhalte auf die „…/register/login.tpl“ appended. Nun möchte ich in diesem Plugin den gleichen Inhalt auch noch auf der „index.tpl“ haben und habe daher den Inhalt kopiert und in einem weiteren Block namens „tester“ gepackt. Das ganze sieht vereinfacht so aus (die kursiven Sachen sind die vereinfacht dargestellten Originale):

login.tpl (Plugin)

{extends file=„parent:frontend/register/login.tpl“}
{extends file=„parent:frontend/register/index.tpl“}

{block name=‚frontend_register_login_customer‘}
    {$smarty.block.parent}
    HIER KOMMT DER CODE DES PLUGINS

{/block}

{block name=‚frontend_register_index_tester‘ append}
    HIER KOMMT DER KOPIERTE CODE DES PLUGINS
{/block}

 

index.tpl (Bare)

  {block name=‚frontend_register_index_tester‘}
Hier sollte eigentlich der Code aus dem Plugin erscheinen
    {/block}

 

Was passiert ist, dass auf der Checkout Seite der Text „Hier sollte eigentlich der Code aus dem Plugin erscheinen“ steht, d.h. der Blockinhalt wird nicht ersetzt.

Kann mir jemand weiterhelfen? Muss ich den neuen Block „tester“ erst irgendwo registrieren?

1.append wird nicht mehr benutzt. sondern {$smarty.block.parent}
2.wäre ein include der login.tpl in der index.tpl nicht besser?
3.wieso ist da oben das extend zweimal drin?

Zunächst vielen Dank für die Rückmeldung.

Das $smarty.block.parent nutzt man doch nur, wenn der Inhalt eines bestehenden Blocks mitverwendet werden soll, oder? Ich möchte ja meinen eigenen Block nutzen. Aber habe das mit dem Append soweit mal abgespeichert :wink:

Zum Punkt 2 und 3: Ich habe ja den neuen Block in der Template-Datei eines Plugins (Amazonpay) hinzugefügt. Dieser bindet bereits die Inhalte des Plugins in die frontend/bare/register/login.tpl ein. Nun möchte ich ja aber den gleichen Inhalt auch noch in der frontend/bare/register/index.tpl haben. Daher habe ich beide Dateien extended und ging eigentlich davon aus, dass dann der von mir definierte Block “tester” auch greifen sollte…

 

Dann muss das in eine eigene tpl-Datei und wird dann nur noch inkludiert.

Also ich glaube ich habe mich falsch ausgedrückt. Ich versuche es nochmal ganz einfach:

  1. Ich möchte in dem Standardtemplate „theme/bare/frontend/register/index.tpl“ einen NEUEN Block hinzufügen. Dieser soll „testblock“ heißen. Das habe ich getan, indem ich direkt in diese Datei geschrieben habe (und ja ich weiß, das kommt später in das Custom Theme):
     

{block name=‚testblock‘}
    Hier soll der Inhalt ersetzt werden
{/block}

Wenn ich nun den Checkout aufrufe, wird dieser Text auch angezeigt. Soweit so gut.

 

  1. Nun möchte ich diesen Block gerne durch andere Inhalte überschreiben. Daher habe ich in dem Ordner „frontend/register/“ des Plugins (BestITAmazonPayment) eine neue .tpl Datei angelegt, die heißt „test.tpl“

In dieser steht:

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

{block name=‚testblock‘}
    Ich bin der neue Text
{/block}

 

  1. Rufe ich nun den Checkout auf, wird der Text nicht ersetzt. Mein Block wird also ignoriert und nicht überschrieben. Was genau fehlt denn nun?