Guten Tag, ich lese mich gerade in die Entwicklung eigener Plugins für Shopware ein. Aktuell möchte ich wenn jemand einen Artikel in den Warenkorb legt, dass dann in dem Ajax (ajax_add_article.tpl) unter dem Artikel noch eine Zubuchmöglichkeit erscheint. Zum Beispiel “Kaufen Sie auch direkt das passende blablabla dazu” soll erscheinen und durch einen Klick mit in den Warenkorb wandern. Ich stehe aber schon vor dem Problem dass ich garnicht erst den Punkt angezeigt bekomme. Bootstrap.php erstellt, Plugin installiert und auch schon eine Testausgabe gemacht. Jedoch schaffe ich es nicht die View zu verändern/nutzen. Folgendes hatte ich zuerst getestet… private function registerEvents() { $this-\>subscribeEvent('sBasket::sAddArticle::before','onAddArticle'); } public function onAddArticle(Enlight\_Event\_EventArgs $arguments) { $getPrice = Shopware()-\>Db()-\>fetchOne("SELECT s\_articles\_prices.price FROM s\_articles\_prices JOIN s\_articles\_details ON s\_articles\_details.articleID=s\_articles\_prices.articleID WHERE s\_articles\_details.ordernumber=?",array($arguments-\>get('id'))); $priceTmp = explode(".", $getPrice \* 1.19); $test = Shopware()-\>Db()-\>fetchOne("SELECT paketname FROM test WHERE ds\_von \<= ? AND ds\_bis \>= ?",array($priceTmp[0],$priceTmp[0])); print\_r($test." - ".$priceTmp[0]); }
Da wird auch was ausgegeben. Nur wie muss ich nun vorgehen um da ordentlich etwas in dem .tpl unterzubringen? Dieser Versuch hier geht nicht… public function onPostDispatchFrontend(Enlight\_Event\_EventArgs $arguments) { $controller = $arguments-\>getSubject(); $request = $controller-\>Request(); $response = $controller-\>Response(); $view = $controller-\>View(); if(!$request-\>isDispatched()||$response-\>isException()||!$view-\>hasTemplate()) { return; } $view-\>addTemplateDir($this-\>Path() . 'Views/'); $view-\>extendsTemplate('frontend/plugins/test/ajax\_add\_article.tpl'); }
In dem “frontend/plugins/test/ajax_add_article.tpl” habe ich einfach nur eine Testausgabe… {extends file="parent:/frontend/checkout/ajax\_add\_article.tpl"} {\* Block erweitern \*} {block name="frontend\_checkout\_ajax\_add\_article\_middle" append} Test!!! {/block}
Ich probiere da jetzt seit Tagen dran herum und quäle mich durch die einzelnen Bereiche im Wiki. Jetzt hoffe ich hier die entsprechenden Tipps zu bekommen. Gruß Majjo
Hallo, ist der Subscribe für den Listener „onPostDispatchFrontend“ vorhanden? Wenn nicht, ersetz mal die Methode „registerEvents“ durch: private function registerEvents() { $this-\>subscribeEvent('sBasket::sAddArticle::before','onAddArticle'); $this-\>subscribeEvent('Enlight\_Controller\_Action\_PostDispatch\_Frontend','onPostDispatchFrontend'); }
Viele Grüße
1 „Gefällt mir“
Vielen Dank. Das war es.