Hallo, ich bin sehr neu in Shopware Programmierung und versuche gerade mein erstes Plugin zu Programmieren. Ich habe mir einige Beiträge in der Doku angeschaut und habe mit Hilfe folgender Doku ( http://wiki.shopware.com/Shopware-4-Gru … 1_867.html ) mein erstes Plugin aufgesetzt. Dieses wird auch im Backend angezeigt und ich kann das Plugin de- und aktivieren, jedoch sehe ich im Frontend keinerlei anzeichen, ob das Plugin überhaupt läuft. Meine Plugin Bootstrap.php sieht folgender Maßen aus: <?php class Shopware_Plugins_Frontend_caroPluginTest_Bootstrap
extends Shopware_Components_Plugin_Bootstrap
{
public function getCapabilities()
{
return array(
'install' => true, 'update' =\> true, 'enable' =\> true ); } public function getLabel() { return 'Test Plugin - Caro'; } public function getVersion() { return '1.0.0'; } public function getInfo() { return array( 'version' =\> $this-\>getVersion(), 'label' =\> $this-\>getLabel(), 'supplier' =\> '', 'description' =\> 'Nur ein erster Test', 'support' =\> 'gibbet nicht', 'link' =\> 'http://www.google.de', 'author' =\> 'Caroline', 'copyright' =\> 'Caroline' ); } public function install() { $this-\>registerEvents(); return true; } private function registerEvents() { $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch', 'onPostDispatchFrontend' ); } public function onPostDispatchFrontend(Enlight\_Event\_EventArgs $arguments) { /\*\*@var $controller Shopware\_Controllers\_Frontend\_Index\*/ $controller = $arguments-\>getSubject(); /\*\* \* @var $request Zend\_Controller\_Request\_Http \*/ $request = $controller-\>Request(); /\*\* \* @var $response Zend\_Controller\_Response\_Http \*/ $response = $controller-\>Response(); /\*\* \* @var $view Enlight\_View\_Default \*/ $view = $controller-\>View(); //Check if there is a template and if an exception has occured if( !$request-\>isDispatched() || $response-\>isException() || !$view-\>hasTemplate() || $request-\>getModuleName() != "frontend") { return; } //Add our plugin template directory to load our slogan extension. $view-\>addTemplateDir($this-\>Path() . 'Views/'); $view-\>extendsTemplate('frontend/plugins/caro\_test/index.tpl'); $view-\>assign('sampleText', $this-\>getSampleText()); } private function getSampleText() { return 'Irgendein Text'; } }
Wenn ich nun in der Methode getSampleText oder direkt in der Methode onPostDispatchFrontend ein die oder exit reinschreibe (Meine Art zu testen ob ich überhaupt an der Stelle lande ) passiert garnichts. Das Plugin ist im Shopware Backend aktiviert. Übersehe ich dort irgendetwas? Sind noch weitere Schritte notwendig? Letztendlich, wenn ich mal weiterkomme, soll das Plugin überprüfen ob ein Benutzer eingeloggt ist oder nicht Ich stehe momentan auf dem Schlauch :wtf: Hat jemand einen Tipp für mich? EDIT: Kann mir jemand einen guten Einsteiger Tipp zum Entwickeln von Plugins geben? Leider finde ich keine guten Beispiel Plugins, die man sich mal anschauen kann
Hallo Caro, also mit deiner Bootstrap Datei ist alles in Ordnung. Habe die gerade mal per Copy&Paste in eine meiner Testumgebungen (Shopware 4.3.0) geschmissen und da läuft’s direkt nach der Installation. Die Template-Datei die du in der extendsTemplate-Methode angibst existiert? (Aber selbst wenn nicht sollte es eine Fehlermeldung geben und nicht einfach nichts passieren.) Hast du eventuell nach dem Installieren das Event auf das du dich registrierst geändert? Die install-Methode wird ja nur (wie der Name schon sagt) bei der Installation aufgerufen. Wenn du also an der Stelle etwas änderst musst du das Plugin einmal neu installieren. Zu den Beispielen: Das was du schon verlinkt hast ist ein guter Einstieg. Hier gibt es noch weitere Beispiele: http://wiki.shopware.com/Beispiele_cat_868.html
Super, das war der Fehler! Dann kann ich heute Abend weiter los legen! Vielen Dank!