Plugin Erstellung - Template überschreiben

Hallo Zusammen, ich habe ein Plugin erstellt, welches unteranderem den Block „frontend_account_index_newsletter_settings“ im Template frontend/account/index.tpl überschreiben soll. Der Bootstrap von meinem Plugin ist wie folgt: public function install() { $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Index', 'onPostDispatchIndex' ); return true; } public function onPostDispatchIndex(Enlight\_Event\_EventArgs $arguments) { /\*\*@var $controller Shopware\_Controllers\_Frontend\_Index\*/ $controller = $arguments-\>getSubject(); $view = $controller-\>View(); //Add our plugin template directory to load our slogan extension. $view-\>addTemplateDir($this-\>Path() . 'Views/'); $view-\>extendsTemplate('frontend/plugin/XXX/account.tpl'); } Das Plugin lässt sich installieren, aktivieren und und und. Nun muss ich natürlich „$this->subscribeEvent(Enlight_Controller_Action_PostDispatch_Frontend_Index’, ‚onPostDispatchIndex‘“ So abändern, dass mein Account Controller genutzt wird. Ändere ich das also in: „$this->subscribeEvent(Enlight_Controller_Action_PostDispatch_Frontend_Account’, ‚onPostDispatchIndex‘“ Erhalte ich den folgenden Fehler: [quote] Fatal error: Uncaught exception ‚SmartyException‘ with message ‚Unable to load template snippet ‚frontend/index/categories_top.tpl‘ in ‚frontend/error/index.tpl‘‘ in /is/htdocs/wp10583908_FYPS21T0RY/www/shopware/engine/Library/Smarty/sysplugins/smarty_internal_templatebase.php:127 Stack trace: #0 /is/htdocs/wp10583908_FYPS21T0RY/www/shopware/engine/Library/Smarty/sysplugins/smarty_internal_template.php(286): Smarty_Internal_TemplateBase->fetch(NULL, NULL, NULL, NULL, false, false, true) #1 /is/htdocs/wp10583908_FYPS21T0RY/www/shopware/cache/templates/compile/frontend_emotion_orange_de_DE_1/c4/6a/5b/c46a5b8f7b207b194db6820d05ce706df52e5d16.snippet.index.tpl.php(231): Smarty_Internal_Template->getSubTemplate(‚frontend/index/…‘, NULL, ‚frontend_emotio…‘, NULL, NULL, Array, 0) #2 /is/htdocs/wp10583908_FYPS21T0RY/www/shopware/engine/Library/Smarty/sysplugins/smarty_internal_templatebase.php(180): content_510bccc5f0a555_05468143(Object(Enlight_Template_Default)) #3 /is/htdocs/wp10583908_FYPS21T0RY/www/shopware/engine/Librar in /is/htdocs/wp10583908_FYPS21T0RY/www/shopware/engine/Library/Smarty/sysplugins/smarty_internal_templatebase.php on line 127 [/quote] Vielleicht kann mir Jemand verraten wie ich das Template richtig überschreibe? Vielen Dank!

Anyone?

Hi jfichtel, ich habe da mal ein paar Infos von einem Entwickler. Du musst deine Zeilen 16-18 ersetzten. Mit: $controller = $arguments-\>getSubject(); $view = $controller-\>View(); $request = $controller-\>Request(); if ($request-\>getControllerName() !== 'account' || $request-\>getModuleName() !== 'frontend' || !$view-\>hasTemplate()) { return; } Es muss geprüft werden, ob überhaupt die view überhaupt ein template hat. Ich hoffe dir damit weitergeholfen zu haben. Gruß Patrick

Hallo danke schön. Nun probiere ich das umzusetzen, aber es kommt zu einem Fehler. Das doofe da dran ist, dass im Frontend keine Fehler ausgegeben werden, sondern nur die Seite „es ist ein Fehler aufgetreten“ aufgerufen wird mit dem Template, aber ohne Inhalt. Hatte das Jemand schon einmal?

Habe mal von emotion_orange auf orange gestellt, damit geht es nun, also bekomme einen Fehler. Aber hier wird es interessant: [quote] Ups! Ein Fehler ist aufgetreten! Die nachfolgenden Hinweise sollten Ihnen weiterhelfen. Unable to load template snippet ‘frontend/account/index.tpl|frontend/plugin/xxx/account.tpl|frontend/plugins/compare/index.tpl|frontend/plugins/seo/index.tpl|frontend/plugins/advanced_menu/index.tpl|frontend/index/bundle_header.tpl’ in Smarty/sysplugins/smarty_internal_templatebase.php on line 127 Stack trace: #0 Enlight/View/Default.php(273): Smarty_Internal_TemplateBase->fetch() #1 Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(212): Enlight_View_Default->render(Object(Enlight_Template_Default)) #2 Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(238): Enlight_Controller_Plugins_ViewRenderer_Bootstrap->renderTemplate(Object(Enlight_Template_Default)) #3 Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(136): Enlight_Controller_Plugins_ViewRenderer_Bootstrap->render() #4 [internal function]: Enlight_Controller_Plugins_ViewRenderer_Bootstrap->onPostDispatch(Object(Enlight_Event_EventArgs)) #5 Enlight/Event/Handler/Default.php(91): call_user_func(Array, Object(Enlight_Event_EventArgs)) #6 Enlight/Event/EventManager.php(156): Enlight_Event_Handler_Default->execute(Object(Enlight_Event_EventArgs)) #7 Enlight/Controller/Action.php(147): Enlight_Event_EventManager->notify(‘Enlight_Control…’, Array) #8 Enlight/Controller/Dispatcher/Default.php(521): Enlight_Controller_Action->dispatch(‘indexAction’) #9 Enlight/Controller/Front.php(214): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp)) #10 Shopware/Bootstrap.php(79): Enlight_Controller_Front->dispatch() #11 Enlight/Application.php(192): Shopware_Bootstrap->run() #12 shopware.php(74): Enlight_Application->run() #13 {main} [/quote] Mich macht der Part stutzig von das Snippet nicht geladen werden kann. Warum läft der ein Template was aus mehreren mit | gekettet ist?