Hallo Leute,
ich beschäftige mich seit kurzem mit der Plugin-Programmierung für Shopware (erstmal nur mit dem Legacy-System) und habe noch ein paar Startschwierigkeiten.
An sich will ich fürs Erste nur einen vorhanden Template-Block erweitern.
Ich habe in meiner Bootstrap.php den folgenden Code:
public function install()
{
//(...)
$this->subscribeEvent('Shopware_Modules_Basket_AddArticle_Start', 'onShopwareModulesBasketAddArticleStart');
//(...)
}
//wenn ein artikel zum warenkorb hinzugefuegt wird
public function onShopwareModulesBasketAddArticleStart(Enlight_Event_EventArgs $args){
//verzeichnis fuer templates hinzufuegen
$this->Application()->Template()->addTemplateDir($this->Path() . 'templates/');
//funktioniert nicht, weil View() nicht vorhanden ist?!
//$args->getSubject()->View()->addTemplateDir($this->Path() . 'templates/');
}
Dazu habe ich ein Template unter “MeinPluginName/templates/ajax_cart.tpl”:
{extends file="parent:frontend/checkout/ajax_cart.tpl"}
{block name="frontend_checkout_ajax_cart_button_container_inner" append}
foobar
{/block}
Wenn ich nun einen Artikel in den Warenkorb lege, würde ich erwarten, dass dort der entsprechende Block um den Text “foobar” erweitert wird, was aber nicht der Fall ist. Das Template von mir wird nicht berücksichtigt.
Was läuft also schief? Ich schätze mal, dass ich den Template-Ordner nicht richtig eingebunden habe. Ich bin auch etwas verwirrt, dass es mehrere Wege gibt, um addTemplateDir() aufzurufen. Kann hier jemand einem Anfänger helfen :)? Danke für Eure Hilfe schonmal!
PS: Gibt es ein Event, dass jedesmal feuert, wenn der Warenkorb angesehen wird und nicht nur beim Artikel-Hinzufügen?