Hi Shopware Community.
Ich habe ein Problem mit einem Plugin. Ich kann die Position des Plugins nicht veraendern, da das Plugin selber vom Bare vererbt und einen Block mit {$smarty.block.parent} einen neuen block einfuegt. Im selben Block habe ich aber bereits schon Aenderungen. Jetzt wird der Content des Plugins nicht wie gedacht am Ende des Blocks eingefuegt, sondern leider am Anfang.
Ich habe versucht das zu ueberschreiben, indem ich in meiner .tpl Datei den Block des Plugins versucht habe aufzurufen, was aber leider keinen Effekt hatte.
Wie schaffe ich es jetzt diesen “Append-like” Content zu verschieben oder zu entfernen und dennoch Aenderungen im gleichen Block zu machen? Sofern ich das verstanen habe kann ich nach einem {$smarty.block.parent} keinen Content mehr vom Parent aendern.
Ich hoffe mir kann da jemand weiterhelfen.
Hast du auf die Vererbungsreihenfolge geachtet?
Getting started with Smarty
Das habe ich, ja. Ich habe auch bei anderen Plugins schon das Template angepasst ohne Probleme. Nur in diesem Fall geht es ja um die Positionierung und das Einfuegen des spezifischen Plugin Templates in ein Grundtemplate im Theme. Das habe ich bisher nicht ueberschreiben koennen.
Beispiel:
{*Plugin Template}
{extends file="parent:frontend/detail/index.tpl"}
{block name='frontend_detail_block'}
{$smarty.block.parent}
{block name='some_plugin_block'}
{include file='frontend/plugin_name/template.tpl'}
{/block}
{/block}
Das ‘template.tpl’ laesst sich auch ueberschreiben, aber den ‘some_plugin_block’ kann ich nicht ansprechen aus unersichtlichen Gruenden. auch wenn ich den parent block einfach leer lasse wird das Plugin template an dieser Stelle gerendert. Einzig wenn ich den darueberliegenden block aendere und den besagten block dann als child einfach loesche habe ich den gewuenschten effekt, loesche aber dann natuerlich den eigentlichen content und habe wesentlich mehr Zeilen an Inhalt. Und an manchen Stellen gibt es leider keinen ‘parent-block’.
Hallo,
ein paar Möglichkeiten zum Tricksen gibt es noch:
-
Stelle mal in der Theme.php die Member Variable injectBeforePlugins auf false. Das ist ein Schalter, der Dein Theme vor oder nach den Plugins lädt in der Vererbungsreihenfolge.
-
Nicht weiter dokumentiert aber war bei mir bei einem ähnlichen Fall hilfreich: Wenn es um eine konkrete Ansicht geht, wie z. B. die Artikel Detailseite, dann registriere Dich auf das postDispatch Event und gib als 3. Parameter die Ausführungsreihenfolge an. So kannst du Dich genau hinter das Plugin setzen, mit dem Effekt, dass Deine View die Plugin View überschreibt.
-
Smarty record Funktion nutzen: Habe ich noch nie selber benutzt, aber es gibt die Möglichkeit in Smarty Blöcke “aufzunehmen”, was nichts anderes tut, als Dir den Inhalt des Blocks einer Variable zuzuweisen.
-
Anderen Block davor nehmen: War bei mir schonmal hilfreich: Nimm einfach einen Block direkt davor.
MFG
derwunner