Parent Template -> neuer Block

Hallo,

ich habe ein

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

jetzt habe ich sonst immer folgendes gemacht un neue Blöcke einzufügen:

{block name="frontend_index_footer_column_newsletter" append oder prepend}{/block}

In der Doku steht aber

Attention: It is reommended to not use the smarty block parameter append and prepend , so other templates or plugins can overwrite the same block without problems.

Jetzt meine Frage  wie ich sonst Blöcke einfügen kann?

LG Ralf

Es geht nur um die Nutzung von append und prepend, an der Überschreibung von Blöcken ändert sich nichts.

prepent und append geben lediglich an, ob dein Code vor oder hinter dem ursprünglichen Inhalt gesetzt werden soll, das machst du jetzt einfach anders.

{extends file='parent:frontend/index/footer-navigation.tpl'}

{block name='frontend_index_footer_column_newsletter'}
    // Dein Code vor ursprüngliche Inhalt

    {$smarty.block.parent}

    // Dein Code nach ursprüngliche Inhalt
{/block}

 

Nicht überschrieben. Ich würde ein gänzlich neuen Block einfügen wollen :wink:

Für den neuen Block brauchst du ohnehin kein append oder prepend.

Auch nach Cache löschen etc. zeigt das aber keine Wirklung :confused:
 

{block name="frontend_index_footer_column_info"}
TEST
{/block}

 

Was ist Dein Ansinnen?
Da fehlt jedenfalls noch:
 

{extends file='parent:frontend/index/footer-navigation.tpl'}

oder welche Datei auch immer

Edit: Es muss natürlich als Ausgangpunkt für Überschreibungen/Ergänzugen ein existierender Block verwendet werden. Einen „frontend_index_footer_column_info“ gibt es in der footer-navigation.tpl aber nicht. Darum kann das auch nicht gehen.

@Ralf2011 schrieb:

Auch nach Cache löschen etc. zeigt das aber keine Wirklung :/
 

{block name=„frontend_index_footer_column_info“}
TEST
{/block}

 

Template neu kompilieren 

Ich denke hier liegt eine generelle Fehleinschätzung vor.

Du kannst bestehende tpl nur ergänzen oder überschreiben, neue Blöcke lassen sich demnach nur dadurch einfügen, dass du den darüber liegenden Block erweiterst um deinen Block.

Bspl.:

{extends file='parent:frontend/index/footer-navigation.tpl'}

{AlteBlock}
   {$smarty.block.parent}
   {DeinNeuerBlock}{/Block}
{/Block}

 

Einfach einen neuen Block definieren kann man meines Wissens nach nicht, also musst du mal schauen was der nächst höhere Block ist.

@PStadtfeld schrieb:

Einfach einen neuen Block definieren kann man meines Wissens nach nicht, also musst du mal schauen was der nächst höhere Block ist.

Exakt - woher soll das Template auch wissen, an welcher Stelle im Document später dieser „neue“ Block auch immer erscheinen soll. Er muss ja in einem Block „verankert“ werden.

Okay, erscheint logisch. Aber wie macht man es dann?

WAS willst Du denn machen?
Such Dir die Stelle im Code, wo Du etwas „anhängen“ möchtest. Mit etwas Glück endet oder beginnt dort ein Block.
Hinter einen vorhanden Block anhängen: Hat PStadtfeld oben ja schon gezeigt. Davorhängen: Inhalt einfach vertauschen.
Getting started with Smarty

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

{* Service hotline *}
{block name="frontend_index_footer_column_service_hotline"}{/block}
{block name="frontend_index_footer_column_service_menu"}{/block}
{block name="frontend_index_footer_column_newsletter"}{/block}


{block name="frontend_index_footer_column_info"}
NEUER BLOCK
{/block}

Das möchte ich wenn möglich haben. :slight_smile: Weil ich eine saubere Struktur möchte, will ich das ne zum Beispiel in den Newsletterblock schreiben :wink:

Ok - also Dein Block soll nach “frontend_index_footer_column_newsletter” kommen.
Also wäre ein Weg: 

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

{block name="frontend_index_footer_column_newsletter"}
 {$smarty.block.parent}
 {block name="frontend_index_footer_column_info"}
  Dein Code
 {/block}
{/block}

“Sauberer” geht es nicht. Du musst es ja verankern.
Wenn Du es wirklich so haben willst, wie Du darstellst, musst Du aus Bare den ganzen Code vom “übergeordneten” Block kopieren und Deinen an gewünschter Stelle einfügen - was dann ja abolut nicht updatesicher ist.

Eigene Blöcke machen nur Sinn, wenn du diese später an anderer Stelle wieder überschreiben willst - und ich gehe nicht davon aus, dass das dein Ziel ist.

Viele Grüße
https://www.digitvision.de

Ich verstehe schon, was er will.
Er hängt seinen Code ja nicht wirklich hinter den Block, sondern am Ende vom Block rein. So kann natürlich ein anderes Plugin etc. den Block wieder überschreiben, und seine eigene Änderung wäre wieder weg. Beim “reinhängen” benötigt er keinen Block, aber das will er ja nicht!
Vom “Denken” her verständlich, aber eben so nicht umsetzbar. Letztlich muss er eben den ganzen Code vom übergeordneten Block übernehmen - dann ist sein “neuer” Block nicht durch andere Plugins “gefährdet”. Alles nur Kompromisse  Wink

Okay, dann muss das wohl so sein.

Danke für deine/eure Hilfen :slight_smile: