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?!
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.
Das ist mal echt schade …gibts sonst irgendwelche Optimierungen damit man nicht so viel vom Parent-Theme kopieren muss. Evtl. irgend ein include-Befehl?
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?
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.