Child Template erstellen smarty.block.parent Fehler / Problem


#1

Hallo,

ich versuche gerade ein Child-Theme zu erstellen, allerdings scheitere ich daran, einen Block zu überschreiben.

Ich habe ein Child-Theme vom Flow-Theme erstellt und möchte oben den Suchleistenblock ergänzen, das heißt es gibt unter meinem Child-Theme den Pfad /views/flow_child/tpl/widget/header/search.tpl

In diese Datei habe ich folgendes geschrieben:
[{block name=“widget_header_search_form”}]

Sie brauchen Hilfe bei der Gestaltung?

[{$smarty.block.parent}]
Test
[{/block}]

Dann erhalte ich allerdings folgende Fehlermeldung: Fatal error:
Fatal error: Smarty error: [in widget/header/search.tpl line 3]: syntax error: $smarty.block is an unknown reference (Smarty_Compiler.class.php, line 2164) in /var/www/vhosts/xxxx/xxxxxx/oxid_sb24/vendor/smarty/smarty/libs/Smarty.class.php on line 1100

Wenn ich [{$smarty.block.parent}] weglasse, dann funktioniert das Überschreiben des Blocks. Aber das hilft mir nichts, weil ich nur an den originalen Block etwas anhängen möchte und ich auch wegen Update-Kompatibilität den originalen Block nicht kopieren möchte.

Weiß jemand wie der Befehl richtig lautet, weil [{$smarty.block.parent}] scheint nicht zu funktionieren?!

Besten Dank für die Hilfe.


#2

Die Datei aus dem Childtheme ersetzt die Datei des Parentthemes. Hier muss alles rein, was dargestellt werden soll.

Hat im Theme nichts zu suchen. Damit kannst über ein Modul etwas zu einem Block hinzufügen.


#3

Vielen Dank für die Info. Trotzdem wundert es mich sehr, da es mit Smarty eigentlich möglich sein sollte. In Shopware funktioniert mein beschriebenes Vorgehen nämlich einwandfrei.


#4

child theme von OXID ist nicht das selbe wie child template von smarty 3.
außerdem nutzt OXID Smarty 2, während Shopware Smarty 3 nutzt.


#5

Das ist mal echt schade :frowning: …gibts sonst irgendwelche Optimierungen damit man nicht so viel vom Parent-Theme kopieren muss. Evtl. irgend ein include-Befehl?


#6

jup, include gibts:
https://www.smarty.net/docsv2/de/language.function.include.tpl


#7

OK danke, jetzt wäre nur noch interessant, wie ich mit dem Include dann in einen Block etwas appenden oder prependen kann. geht das evtl. mit dem capture? Wenn ja wie?


#8

ich glaub nicht, dass das geht.
Zum Erweitern oder Überschreiben von Blocks braucht man ein Modul, wie schon in der ersten Antwort erwähnt wurde.
Vergiss am besten alles, was du über Shopware heißt. Man darf hier keine Rückschlüsse auf ein völlig anderes System ziehen, nur weil beides irgendwie “Shop” im Namen hat.