Hey, nach fast 2 Wochen Entwicklung und über 5000 Zeilen Code, hier nun die erste Public-Beta vom Kickstarter-Plugin. Das ist denke ich ganz nett geworden und sollte eine ziemliche Arbeitserleichterung bei der Erstellung eigener Erweiterungen sein. Download Download im Wiki unter http://www.shopware.de/wiki/Shopware-Ki … 3_444.html Bugs / Feature-Requests Ich hoffe auf viel Feedback. Dieses bitte in das Trac-Ticket zum Plugin unter http://trac.shopware.de/trac/ticket/4891#comment:1 Was machst das Plugin? Mit dem Shopware Kickstarter-Plugin kann die komplette Grundstruktur eines Plugins automatisch erzeugt werden. Es ist dazu kein manuelles Coding mehr erforderlich. Man kann also alle wesentlichen Eigenschaften des Plugins bequem über eine grafische Oberfläche konfigurieren und erhält als Ergebnis fertigen Code. Welche Komponenten / Konfigurationen können vorgenommen werden? [list] [*] Plugin Grundstruktur / Meta-Daten (Name / Autor etc.)[/*] [*] Plugin Konfigurationsfelder Backend [/*] [*] SQL welches bei Installation / Deinstallation ausgeführt werden soll[/*] [*] Anlegen neuer Frontend-Controller[/*] [*] Anlegen neuer Backend-Controller[/*] [*] Erzeugen von Backend Menü-Einträgen für eigene Backend-Controller[/*] [*] Anlegen von Cronjobs[/*] [*] Indizierung aller in Shopware verfügbaren Events[/*] [*] Auswahl dieser Events per Tree-Menü[/*] [*] Erzeugung des notwendigen Codes zur Integration der Events[/*] [*] Auslesen aller verfügbaren Objekte, die über Hooks modifiziert werden können.[/*] [*] Darstellung dieser Objekte + Methoden in einem Tree-Menü[/*] [*] Auswahl der Methoden, die man überlagern will[/*] [*] Auto-Erstellung des dazu notwendigen Codes[/*] [*] Auswahl der Templates, die man modifizieren möchte[/*] [*] Auswahl der Template-Blöcke, die man modifizieren möchte[/*][/list] Welchen Code / Welche Dateien generiert das System? [list] [*] Es wird eine vollständige Bootstrap.php erzeugt, mit allen notwendigen Methoden[/*] [*] Es werden die notwendigen PHP-Files und Templates für eigene Controller generiert[/*] [*] Es werden die notwendigen Verzeichnisse, Dateien und Inhalte zur Überlagerung von Templates und Blöcken generiert[/*][/list] Wie wird die Code-Generierung ausgeführt? Einfach auf den Tab-Reiter Coding wechseln und auf Tag erzeugen klicken. Das System verfügt über eine integrierte Versionsverwaltung. Jede neue Code-Generierung, wird also in einem eigenen Verzeichnis gespeichert, so dass man verschiedene Versionsstände vergleichen kann. Wie kann ich den Code einsehen? Einfach im Panel Coding einen Tag auswählen. Unterhalb des Tags befindet sich die komplette Datei- und Verzeichnisstruktur, die das Kickstarter-Plugin automatisch generiert hat. Diese Dateien können über einen integrierten Code-Editor direkt geöffnet und auch bearbeitet werden. Welche Export Funktionen gibt es? In der Beta kann man sich die XMl-Datei des Projekts unter dem Tab-Reiter “Deploy” anschauen - diese kann man als Vorlage für neue Projekte verwenden. In der finalen Version wird es folgende, weitere Deployment-Möglichkeiten geben: [list] [*] Plugin in den aktuellen Shop exportieren Damit wird das Plugin automatisch nach Shopware\Plugins\Community exportiert und kann dann direkt über den Plugin-Manager aktiviert werden. Außerdem kann man natürlich die so exportierten Files auch mit einer IDE weiterbearbeiten. [/*] [*] Zip - Export Das aktuelle Projekt als Zip-Datei herunterladen [/*] [*] Als Vorlage bereitstellen Damit kann man das aktuelle Projekt als Vorlage der Community bereitstellen. Diese Vorlagen werden auf einem zentralen Server verwaltet und können später direkt über den Kickstarter als Basis für neue Plugins verwendet werden. [/*] [*] Upload in Community Store Man kann das fertige Plugin automatisch in den Community Store uploaden - so muss dieses nur noch durch uns freigegeben werden und ist dann sofort verfügbar.[/*][/list] Wo liegen die Projekte und Tags im Dateisystem? Alle Projekte liegen unter engine/Shopware/Plugins/Community/Backend/SwagKick/Projects. Alle Tags liegen im Workspace-Verzeichnis unterhalb des jeweiligen Projekts. Was wird sich in der finalen Version noch ändern? Es werden Such-Möglichkeiten für Events / Hooks und Templates hinzukommen. Außerdem weitere Deployment-Optionen. Die Startseite des Plugins muss auch noch fertiggestellt werden Welche Erweiterungen sind geplant? Es sollen fertige Vorlagen für ExtJS Backend Plugins und z.B. Zahlungsschnittstellen integriert werden. Außerdem soll auch die Erstellung von Datenbank-Models automatisiert werden. So könnte man den manuell zu schreibenden Code für viele Plugins noch weiter reduzieren.
Klasse, werde das bei Zeiten mal testen und berichten. Was mich noch interessieren würde, ist es schon in der Pipeline, eine Checkbox zu gestalten, bei der es eine automatische Auswahl aus z.B. mehreren Punkten gibt? Also entweder Punkt 1 oder 2 oder 3 usw.? Grüße Frank
Das finde ich auch interessant. Noch besser wäre evtl. ein DropDown in den Einstellungen.
Hey, mit Shopware 3.5.4 kommen weitere Konfigurationsfelder hinzu - also auch Select und Checkboxen - außerdem kann man dann eine komplette CUstom-Konfiguration anlegen, um z.B. Abhängigkeiten zwischen Datenfeldern herzustellen!
Update: Die Beta gibt es jetzt auch im Store! http://store.shopware.de/Shopware-Kicks … l_148.html
Hallo Stefan, hatte jetzt mal etwas Zeit mich mit dem Plug-In zu beschäftigen, allerdings hänge ich jetzt bei den Events und Hooks fest. Ich kann dort zwar auf indizieren klicken, es passiert aber nicht, mir werden keine Events und Hooks angezeigt.
Kannst du mal die Firebug Konsole öffnen und schauen, was dort ausgegeben wird?
Also die Rückgabe von dem Request, der ausgeführt wird, wenn du auf indizieren klickst.
missing ) in parenthetical anonymous()backend (Zeile 1183) anonymous()ext-all.js (Zeile 7) anonymous()ext-base.js (Zeile 7) anonymous()ext-all.js (Zeile 7) anonymous()ext-all.js (Zeile 7) anonymous()ext-all.js (Zeile 7) anonymous()backend (Zeile 587) onresize()backend (Zeile 1) [Bei diesem Fehler anhalten] **Fatal error** : Cannot redeclare ...Index.php on line **50**
Bei mir sieht soweit alles gut aus. Unter Deploy funktioniert bisher nur XML. Ist das so in Ordnung, oder habe ich einen Fehler? Edit: Die erstellte Struktur verwirrt mich etwas. Komplett anderst, als in den Tutorials. Aber passt schon…
@Tauucher Du müsstest da mal die Rückgabe des Ajax-Requests „ausklappen“ - da müsste noch mehr stehen, iegentlich ein kompletter Calltrace zum Fehler! Vermutlich ist bei dir irgendwo ein defektes PHP-Script im System, was die Indizierung verhindert. @Ottscho Korrekt, in der Beta gibt es nur den XML_Export. Du kannst dir die generierten Files aber direkt aus dem Dateisystem holen - die liegen ja unter workspace im Plugin-Verzeichnis. Die Struktur ist so eigentlich ideal - das korrespondiert nicht unbedingt mit vorherigen Tutorials, ist so aber zu empfehlen. (Wir bauen unsere Plugins nach demgleichen Schema auf!)
Ich habe jetzt schon den zweiten Versuch, mein Testplugin welches ich über den Kickstarter erstellt habe zu installieren. Leider kommt immer die Meldung „Plugin kann nicht installiet werden“ Woran liegt das? So sieht meine Bootstrap.php aus: [code]<?php /**
-
Bootstrap for OttschoPDFCreator
-
This file was automaticly generated by Shopware Kickstarter.
-
@version 2.0
-
@author Benjamin Ott
*/
class Shopware_Plugins_Frontend_OttschoPDFCreator_Bootstrap extends Shopware_Components_Plugin_Bootstrap
{public function install()
{
//Creating controller event for Frontend - OttschoPDFCreator
$event = $this->createEvent(‚Enlight_Controller_Dispatcher_ControllerPath_Frontend_OttschoPDFCreator‘,‚onGetControllerPathFrontendOttschoPDFCreator‘); $this->subscribeEvent($event); //Creating event listener for Enlight_Controller_Action_PostDispatch $event = $this->createEvent(‚Enlight_Controller_Action_PostDispatch‘,‚onEventOttschoPDFCreator‘,’’); $this->subscribeEvent($event); return true; } public function uninstall() { return true; } public static function onGetControllerPathFrontendOttschoPDFCreator(Enlight_Event_EventArgs $args) { return dirname(__FILE__).’/Controllers/Frontend/OttschoPDFCreator.php’; } public static function onEventOttschoPDFCreator(Enlight_Event_EventArgs $args) { $request = $args->getSubject()->Request(); $view = $args->getSubject()->View(); $response = $args->getSubject()->Response(); $view->extendsTemplate(dirname(__FILE__).’/Views/plugin.tpl’); } public function getInfo() { return include(dirname(__FILE__).’/Meta.php’); } } [/code]
Moin, auch da hilft dir Firebug weiter - dort solltest du im Install-Request eine aussagekräftige Fehlermeldung erhalten. Also den einfach in der Firebug Konsole ausklappen.
[quote=“Stefan Hamann”]Moin, auch da hilft dir Firebug weiter - dort solltest du im Install-Request eine aussagekräftige Fehlermeldung erhalten. Also den einfach in der Firebug Konsole ausklappen.[/quote] Okay, ich glaub ich hab was gefunden in den: {“success”:false,“message”:“Position is not numeric”}
Ist es möglich, dass an einem Beispiel Plugin die einzelnen Schritte im Kickstarter erklärt werden. Der Einstieg für einen Anfänger gestaltet sich doch recht schwierig. Da programmiert man lieber so
@Brooce Ja, wird es geben - allerdings erst im April. @Ottscho Du musst bei der Event-Erstellung eine Ausführungsposition übergeben - also bei Position einfach z.B. 10 eintragen!
@Stefan Ich bin zu blöd. Bekomme es nicht hin. Habe nun das bestehende geändert. Fehler bleibt erhalten. Habe ein komplett neues Projekt gemacht - Fehler bleibt erhalten. Außerdem verstehe ich es nicht ganz. Die Bootstrap.php ändert sich durch den Parameter ja nicht.
Hallo Plugin-Entwickler ;), hab gerade damit angefangen, die Beta 2 zu testen. Da ich die vorgehende Version installiert hatte, hab ich diese im Admin deinstalliert, dann die alten Dateien gelöscht und die neue Version hochgeladen. Ich kann das Plugin nicht installieren - vermutlich weil die Deinstall-Routine nicht alle Einträge löscht. Meldung in Firebug: {„success“:false,„message“:„SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ‚Kickstarter-30‘ for key ‚name‘“} PS: Ist natürlich die Beta 2. Habs oben geändert. Evtl. könnte man den Threadtitel auf ‚Shopware Kickstarter Beta verfügbar!!‘ ändern.
Du musst manuell alle DB Einträge löschen, welche bei der Installation erzeugt werden. Am bestens schaust du dir die Bootstrap.php an, hier siehst du welche Tabelle etc. in die DB eingefügt werden.
Gibt noch ne einfachere Lösung. Einfach die Anweisung… Shopware()-\>Db()-\>query("DELETE FROM s\_core\_menu WHERE `name` = 'Kickstarter'");
an den Anfang der Install-Routine einfügen. Jetzt läufts.