Plugin erstellen

Hi, ich versuche mich gerade an der Plugin-entwicklung. Das Ziel ist eine eigene Tabelle in der Datenbank anzulegen und diverse Felder daraus auf der Produktdetailseite anzuzeigen. Mir ist aber noch nicht klar was in der Bootstrap.php stehen muss damit die Tabelle angelegt wird. Klatsche ich die SQL Anweisung direkt in die install methode in der Bootstrap.php? Die Tutorials zur erstellung eines Plugins hab ich schon durch, ebenso das Beispiel Plugin. Jedoch steht sowas nirgends. Ich vermisse auch eine Dokumentation der Shopwareklassen falls ich eine Hooken möchte. Gibt es sowas noch nicht? Wird sowas noch kommen? Vielleicht bin auch zu sehr in meinem TYPO3 denken… aber normalerweise habe ich eine eigene Klasse die die Core Klasse des Systems erweitert und mir somit zugriff auf alle anderen Objekte liefert ohne das ich dabei merkwürdige Methoden aufrufen muss die sehr statische Inhalte benötigen die nirgends dokumentiert sind, wie z.b.: $event = $this-\>createHook( 'sOrder', 'sSaveOrder', 'onOrder', Enlight\_Hook\_HookHandler::TypeAfter, 0 ); Die einzelnen Parameter sind mir klar (stehen ja auch erklärt) aber wenn ich jetzt ein anderes Objekt, oder vielmehr andere Methoden benötige (die ich ja nicht kenne) wie gehe ich dann vor? Muss ich mir echt die einzelnen php dateien reinziehen damit ich überprüfen kann wo ich bin und wo ich hin will? Die Klassen die hier dokumentiert sind http://www.shopware.de/wiki/Shopware-Kl … t_443.html, sind alle noch nicht freigegeben für 3.5. Kommt da noch was aktuelles das man loslegen kann, oder muss man sich echt eine Entwicklerschulung antun um das Know-How dafür zu erlernen? Eigentlich erwarte ich eine gescheite Quellcode Dokumentation (z.b. ala phpdoc) wenn man sich als community edition behaupten will :wink: Kann auch sein das ich gerade einfach nur einen Denkfehler habe, ich lasse mich gerne belehren :wink: Gruß der Snooops

Hier mal ein Beispiel für das Anlegen von Datenbankinhalten, kommt direkt in die Bootstrap.php: private function createDatabase() { Shopware()-\>Db()-\>exec( "INSERT INTO deine Einträge" ); }

Wird eigentlich auch eine Funktion des Plugins aufgerufen wenn ich das Plugin wieder deinstallieren möchte?

[quote=“Snooops”]Wird eigentlich auch eine Funktion des Plugins aufgerufen wenn ich das Plugin wieder deinstallieren möchte?[/quote] Die Plugin-Deinstallation ist noch fehlerhaft. Die Einträge des Plugins nach der Deinstallation werden nicht aus der DB gelöscht. Kommt bestimmt mit 3.5.4

Das ist nur teilweise korrekt - bei der Deinstallation wird automatisch die Public-Methode “deinstall” im Plugin aufgerufen. Darüber kann man z.B: dann selbst angelegte Tabellen wieder entfernen. Bei der De-Installation wird der Haupteintrag aus der s_core_plugins nicht entfernt - das wird mit 3.5.4 korrigiert!

Deine Kickstarter-Idee halte ich für sehr interessant. Behalte das mal im Hinterkopf!

[quote=„Snooops“] … aber wenn ich jetzt ein anderes Objekt, oder vielmehr andere Methoden benötige (die ich ja nicht kenne) wie gehe ich dann vor? Muss ich mir echt die einzelnen php dateien reinziehen damit ich überprüfen kann wo ich bin und wo ich hin will? [/quote] Hallo Snooops, Bin ja auch noch Neuling. Also ich gehe bislang so vor. Wenn ich z.B., ausgehend von einer Methode im Controller, eine bestimmte Funktion ändern will (z.B. sBasket->sAddArticle()), dann schaue ich mir den Quellcode dieser Funktion an. Da sieht man recht schnell, wo man sich einklinken kann. Wenn ich eine Funktion eines anderen Objekts brauche, dann schaue ich mir die Methoden/Funktionen der Klasse an. Man braucht dazu nicht unbedingt eine Entwicklungsumgebung, aber ein Editor mit Klassenbrowser wie z.B:. PSPad ist schon praktisch. Und ansonsten halt schauen, wie vorhandene Plugins aufgebaut sind.

[quote=„taaucher“]Hier mal ein Beispiel für das Anlegen von Datenbankinhalten, kommt direkt in die Bootstrap.php: private function createDatabase() { Shopware()-\>Db()-\>exec( "INSERT INTO deine Einträge" ); } [/quote] Hi… Hab mit der Funktion private function createDatabase() { Shopware()-\>Db()-\>exec( "INSERT INTO `s_core_snippets` (`id`, `namespace`, `shopID`, `localeID`, `name`, `value`, `created`, `updated`) VALUES ('', 'frontend/plugins/Test/index', 1, 1, 'DetailLinkTest', 'Ich bin ein Test', '2011-04-13 18:24:20', '2011-04-13 18:25:28') " ); meine Boostrap.php gefüttert. Doch leider wurde in der Datenbank nichts eingetragen. Finde jetzt auch keinen Fehler, vielleicht kann mal jemand drüber schauen. Nachtrag: Hab auch schon einen andere Position des Aufruf probiert, aber brachte auch nichts…

Des Rätsel Lösung selbst gefunden…:sunglasses: public function install() { $sql = " INSERT INTO .................. "; Shopware()-\>Db()-\>exec($sql);