Hallo, durch das sloganoftheday Beispiel Plugin wird u.a. gezeigt, wie man einen {block} im Template des index.tpl modifizieren kann. Wie kann ich dann einen Block in einem .tpl modifizieren, welches im Template angezogen wird? Wie kann ich z.B. einen {block} im checkout_actions.tpl durch ein plugin modifizieren? Also nicht in einem eigenen Template! So funktioniert es nicht: File im plugin erzeugt: MEINSHOP/engine/Shopware/Plugins/Local/Frontend/SwagMyPlugin/Views/frontend/plugins/my_plugin/index/checkout_actions.tpl und in der bootstrap analog zum sloganoftheday: [quote] public function onPostDispatchFrontend(Enlight_Event_EventArgs $arguments) { $controller = $arguments->getSubject(); $view = $controller->View(); if (!$view->hasTemplate()) { return; } //Add our plugin template directory to load our slogan extension. $view->addTemplateDir($this->Path() . ‚Views/‘); $view->extendsTemplate(‚frontend/plugins/my_plugin/index/checkout_actions.tpl‘); } [/quote] Was mache ich falsch? Oder geht das gar nicht und ich muss zwingend über ein eigenes template gehen, sodass dann das plugin vom template abhängig ist? Gruss davey
Hi, ich schließe mich der Frage auch an. Habe ähnliches Problem: möchte die Datei frontend/listing/banner.tpl überschreiben. Diese wird im _default definiert und kommt dann nirgendwo mehr vor, weder in _emotion, noch in dem von _emotion erbenden Template. Meine Plugin Bootstrap wird geladen und auch die entsprechende Bootstrap onPostDispatch Funktion: private function subscribeEvents() { $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Listing', 'onPostDispatch' ); } public function onPostDispatch( Enlight\_Event\_EventArgs $args ) { $view = $args-\>getSubject()-\>View(); $view-\>addTemplateDir( dirname( \_\_FILE\_\_ ) . '/Views/' ); $view-\>extendsTemplate( 'frontend/listing/banner.tpl' ); }
Die im Plugin vorhandene banner.tpl ist im Plugin Ordner unter: Views/frontend/listing/banner.tpl und hat den folgenden Testinhalt: [code]
Banner Ersatz
{block name=“frontend_listing_banner”}
Banner Ersatz Block
{/block} [/code] Sobald ich die Datei im eigenen Template unter frontend/listing einfüge, dann wird der Bannerersatz abgebildet. Jemand eine Idee? Beste Grüße
Hi, bei mir hat sich das erledigt: Als Tipp, man soll niemals den gleichen Namen für eigene Plugin Datei verwenden, die seitens Template Struktur ebenfalls verwendet wird. Bei mir hat es also gereicht dies in etwas umzubenennen was eigen ist und in der Template Datei von der Template Datei zu extenden, die man ergänzen möchte. Beste Grüße
Hi, bei mir hat sich das leider noch nicht erledigt. Dass die Dateinamen nicht identisch sein dürfen kann ich leider nicht bestätigen: Wenn ich nämlich beim sloganoftheday das index.tpl in fufu.tpl umbenenne und den Dateinamen in der Bootstrap anpasse, funktioniert es nicht, es muss dort irgendwie zwingend der selbe Dateiname sein. Aber ich glaube ich will auch etwas anderes machen. Ich möchte eben nicht eine Templateergänzung unterhalb von MEINSHOP/templates/mytemplate/ durchführen, sondern über das plugin angreifen. Gruss davey
edin macht das doch mit einem Plugin. Hast du es mal genau so versucht wie er? Der Tipp von ihm ist sehr wichtig. Hat mich auch mal einen halben Tag gekostet Er gilt auch nicht für Templates sondern für Dateistrukturen unter dem Ordner view/ von Plugins.