Hallo Ich experimentier ein wenig mit der Plugin Entwicklung und steh nun etwas an. Ich hab die Ausgabe meines Plugins imn der Bootstrap in der Variable $xyz bereit liegen. Soweit funktioniert das Plugin auch, wenn ich in der Template Datei {$xyz} angebe. Allerdings will ich natürlich, dass die Templatedatei vom Benutzer nicht überschrieben werden muss, sondern die endsprechende, in meinem Fall box_article.tpl durch das Plugin automatisch ersetzt wird. Die nötige Ordnerstruktur habe ich in meinem Plugin angelgt. Mit $view = $args->getSubject()->View(); $view->addTemplateDir($this->Path() . ‘Views/’); $view->test= $article[‘test’]; $view->extendsTemplate(‘frontend/plugins/test/listing/box_article.tpl’); $view->assign(‘test’,$article[‘test’]); bekomme ich allerdings folgende Fehlermeldung: Fatal Error: Call to undefined method Shopware_Proxies_sArticlesProxy::View() Ich versteh das so, dass das View() Objekt in meinem Event Shopware_Modules_Articles_sGetArticlesByCategory_FilterLoopEnd nicht zur Verfügung steht. Funktionieren würde das View in Enlight_Controller_Action_PostDispatch_Frontend_Listing allerdings steht da sArticles wiederum nicht zur Verfügung, was ich jedoch benötige. Irgendwie steh ich auf der Leitung und bitte um Hilfe Danke
Die Klasse sArticles ist eine Komponenten, die die view weder braucht, noch kennt. Die view ist nur innerhalb eines controller verfügbar. Hier hast du einen Bock im Konzept. Viele Grüße
Das nicht, aber ich hab nun mal meine public function onPostDispatchListing(Enlight_Event_EventArgs $args) welche die $sArticles benötigt und mir das Ergebnis in $xyz ausgibt. und in der selben Funktion mein view(). Registrier ich die Funktion mit dem Shopware_Modules_Articles_sGetArticlesByCategory_FilterLoopEnd Event, dann bekome ich obige Fehlermeldung Nehm ich aber Enlight_Controller_Action_PostDispatch_Frontend_Listing dann hab ich keine Artikelinformationen und meine Plugin bleibt wirkungslos Soll ich eine eigene Funktion für den view machen?
OK, konnte es nun selbst lösen habe 2 unterschiedliche Funktionen $this->subscribeEvent( ‘Enlight_Controller_Action_Frontend_Listing_Index’, ‘onPostDispatchListing’ ); $this->subscribeEvent( ‘Shopware_Modules_Articles_sGetArticlesByCategory_FilterLoopEnd’, ‘ShopwareModulesArticlesGetArticlesByCategoryFilterLoopEnd’ ); die erste fürs Laden der Views, die zweite für die Bearbeitung der sArticles Damit funktioniert es jetzt. Aber wie kann ich eine CSS Datei in mein Plugin einbinden? Muss ich das auch über View machen? Brauch ich dafür ein weiteres Event? Da ich ja die header.tpl ersetzen müsste und diese vermutlich beim Zünden von Enlight_Controller_Action_Frontend_Listing_Index bereits existiert Keine Ahnung ob ihr wisst was ich meine
du nimmst die TPL welche du bereites einfügst und nutzt den Smaty Block umd deine eigene CSS einzubinden. {block name=“frontend_index_header_css_screen” append} Deine CSS {/block}