Programmierung eines neuen Plugins (Grundeinstellungen) Meine Daten: Lokale Shopware 5.0.4 installation auf Windows 7, Apache 2.4.9, MySQL 5.6.17, PHP 5.5.12 Bau eines Inside-Zoom Plugins für die Detailansicht Tutorials die genutzt wurden: https://developers.shopware.com/developers-guide/ Konkret von dieses Seite: ttps://developers.shopware.com/develope … ate-guide/ Im Tutorial steht, falls man ein Smarty Template eines Frontend Plugins überschreiben möchte, genügt es ein View-Objekt in den Template Ordner hinzuzufügen. Ich wollte genau dies bewerkstelligen für die Artikel Detail-Ansicht wo sich das Artikelbild befindet. Hab in die Bootstrap.php in der Methode „install“ das hier eingepflegt: $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_Detail', 'onSecureDetailPostDispatch' );
In der event handler Methode „onSecureDetailPostDispatch“ das hier: $controller = $arguments-\>getSubject(); $view = $controller-\>View(); $view-\>addTemplateDir($path = $this-\>Path() . 'Views');
Somit wollte ich das der Ordner „Views“ Smarty Template overrides Enthält und ich die image.tpl in die views/frontend/detail/ hinzufügen kann mit dem Inhalt: {extends file="parent:frontend/detail/image.tpl"} {block name='frontend\_detail\_image\_default\_image\_element' prepend} Test text... {/block} {block name='frontend\_detail\_images\_image\_element' prepend} Test text... {/block}
Dies müsste einen Test-Text im Frontend ausgeben über einen Artikelbild in der Detailansicht. Es funktioniert aber nicht und ich bekomme auch keinen error. Nach einem Debug hab ich bemerkt das mein Ordner Views automatisch in diverse andere Template Ordner hinzugefügt wird… Es geschieht in der „addTemplateDir()“ Methode in der Linie wo sich „$_template_dir = $this->getTemplateDir();“ befindet klasse „Enlight_Template_Manager“. Kann mir bitte jemand sagen was ich falsch mach? Hier der Link zum Plugin: http://www.filedropper.com/engine Vielen Dank
[quote=„ask80“] In der event handler Methode „onSecureDetailPostDispatch“ das hier: $controller = $arguments-\>getSubject(); $view = $controller-\>View(); $view-\>addTemplateDir($path = $this-\>Path() . 'Views');
[/quote] Hallo, das müsste aber eher so aussehen: $view-\>addTemplateDir($this-\>Path() . 'Views/');
Vorallem der Slash am Ende ist wichtig. Beste Grüße Sebastian
Der Text wird immer noch nicht angezeigt Hab ja das kleine Plugin als Download: http://www.filedropper.com/engine Könntest du bitte vielleicht direkt schauen was ich falsch mache? Wäre echt klasse von dir. Danke
Du kannst es dir mit den Views hier eigentlich abschauen: https://github.com/hostianer/HostiRepla … hp#L90-L96 Hier wird die footer-navigation.tpl extended. Die Struktur des Plugins: https://github.com/hostianer/HostiReplaceNewsletter