Da ich neulich im Rahmen der Bereitstellung des deutschen Sprachpakets erstmalig mit der Paketerstellung im Magento-Backend in Berührung kam, möchte ich mit Ihnen meine daraus resultierenden Erfahrungen teilen.
Außerdem sind wir von mxperts.de der Ansicht das viele User sich für das Thema “Extensions bereitstellen” interessieren. Insbesondere im deutschen Forum kamen schon oft Fragen wie “Extension programmiert - was nun?” auf. Insbesondere diesen Leuten soll mit diesem Beitrag geholfen werden.
Da von den Magento-Extensions alle Anwender (sofern frei verfügbar) profitieren können, wird im folgenden Tutorial der komplette Weg von der Paketerstellung bis hin zur Veröffentlichung auf der Magento-Plattform beschrieben. Als Beispiel dient dabei die mittlerweile erhältliche Erweiterung Mxperts - jQuery Base.
Es wird ebenso auf kleinere Stolpersteine hingewiesen die man vor der Veröffentlichung vermeiden kann. (Eigene Negativ-Erfahrungen die ich gerne weiter gebe)
Denn man sollte sich auf jeden Fall darüber im Klaren sein, dass die auf Magento-Connect hoch geladenen Werke für jedermann erreichbar und installierbar sind.
Des Weiteren haben wir kein Interesse das nach dem Tutorial viele Extensions verfügbar sind, die aber keiner verwenden kann. Bitte begegnen Sie diesem Thema mit etwas Ehrfurcht. Es ist dennoch nie alles perfekt & läuft unter jeder Magento-Version & das wissen die Anwender auch.
Daher nur Mut, veröffentlichen Sie Ihre guten Ideen in Form von Extensions!
Um eine erstellte Extension für Magento-Connect vorzubereiten. Orientieren wir uns zunächst an unserem Beispiel.
Anmeldung vom Modul im System:
- app/etc/modules: Mxperts_Jquery.xml
Lokalisierungen:
- app/locale/de_DE: Mxperts_Jquery.csv
- app/locale/en_US: Mxperts_Jquery.csv
Zusätzliche Bibliotheken (in unserem Fall jQuery):
- js/jQuery - je nach Version alle Dateien die man mit einbeziehen möchte
Das Modul selbst:
- app/code/local/Mxperts/Jquery - die Verzeichnisse Block, etc, Helper & Model
Sie können für Ihre eigene Erweiterung auch gerne den CodePool “community” verwenden. In unserem Fall haben wir uns für “local” entschieden weil auch alle Tutorials dieser Seite darauf basieren und wir nicht möchten, das die Beiträge mit den Live verfügbaren Extensions kollidieren.
Beachten Sie bitte das Sie die gewünschte Version in Ihrer Erweiterung mit ein pflegen, dass ist wichtig um später Updates bereitzustellen!
In jedem Fall sollten alle Dateien bereits in einer Magento-Installation integriert sein und an den Orten liegen wo sie später automatisiert hin kopiert werden sollen - also während der Installationsroutine.
Wenn das gegeben ist gehen wir im Admin-Panel nach System->Magento Connect->Paketerweiterungen.
(Grundlegende Informationen zu Ihrer Erweiterung)
- Name: Der Name der Extension wie er später im Extension Key stehen soll, ein abweichender Name der sich besser liest, kann später auf Magento-Connect angegeben werden.
- Channel: connect.magentocommerce.com/community oder eben wahlweise auch commercial
- Zusammenfassung: Hier bitte eine Kuzinfo eintragen die später im Magento-Connect Manager angezeigt wird - dies hilft dem Nutzer seine Extesnions besser zu verwalten & upzudaten.
Beschreibung: Hier kommt die Beschreibung der Extension hinein.
Tipp: Wenn Sie hier schon in den Beschreibungen sehr detaillierte Angaben machen, dann können Sie diese später bequem für die Beschreibung auf der Magento Seite kopieren. In jedem Fall wird der hinterlegte Text auch im RSS-Feed von Magento-Connect mit angezeigt. ![]()
- Lizenz: Hier wird das Kürzel für die Lizensierung eingetragen, in unserem Fall “AFL”
- Lizenz-URI: Dieses Feld ist optional und ist für die Internetadresse des verwendeten Lizenzmodells vorgesehen - wir haben diese mit “http://opensource.org/licenses/osl-3.0.php” hinterlegt.
Neben den selbsterklärenden Feldern sind die Felder API Version & Hinweise wie folgt zu verstehen:
- API Version: Die Magento Version die mindestens erforderlich ist um die Extension installieren zu können.
Seien Sie hier bitte realistisch. Es hat keinen Sinn zu versuchen alle Magento-Releases mitnehmen zu wollen! Sie können später eine detaillierte Kompatiblitätsangabe auf der Magento-Plattform machen.
Die Angabe von uns “1.2.0″ ist nur darauf bezogen das jemand im Fall der Fälle die Kompatiblitätsinfo nicht liest.
- Hinweise: Dieses Feld ist leider ein Pflichtfeld und dient der Bereitstellung für Entwickler. Hier kann man so etwas wie “Known Issues: …” oder “Upcoming Features: …” eintragen. In unseren Fall haben wir “keine” eingetragen um das Feld irgendwie zu befüllen.
Hier können Sie alle Mitwirkenden benennen.
- “Lead” (Hauptverantwortung)
- “Developer” (Entwickler)
- “Contributer” (Mitwirkender)
- “Helper” (Helfer)
Beachten Sie bitte:
- Lead muss mindestens 1 mal besetzt werden!
- Der jenige der die Erweiterung bereitstellt, sollte seine Benutzer-ID angeben. Im Zweifel schauen Sie zu diesem Zweck in Ihr Benutzerkonto da Ihr Name im Forum (Ihr Screen Name) abweichend sein kann!
Dieser Bereich ist sehr wichtig um Dinge mit einzubeziehen oder gegebenenfalls auch auszuschließen.
So können später zum Beispiel Grundpakete veröffentlicht werden, die dann durch PlugInns erweitert werden können. Da wir zum Zeitpunkt der Erstellung dieses Beitrags noch kein eigenes Beispiel anführen können verweisen wir an dieser Stelle auf bereits erhältliche Pakete:
- Das Grundmodul: Enhanced Product Grid
- Ein PlugInn für dieses Modul: Mass Product Relater
Ähnlich werden wir in Zukunft auch optionale Erweiterungen für unsere jQuery Base Extension bereitstellen.
Hier müssen mindestens die kompatiblen PHP Versionen angegeben werden - in unserem Fall orientieren wir uns an der Mindestanforderung von Magento. 5.2.0 bis 6.0.0
Wenn auf noch nicht absehbarer Zeit 6.0.0 veröffentlicht wird, sollten sie spätestens diesen Punkt mal updaten. Zum Zeitpunkt dieses Beitrags sollte man in jedem Fall bis mindestens 5.3.0 berücksichtigen. Die aktuell verfügbare PHP Version finden Sie hier. Die Angabe “Stable Releases” ist hier maßgeblich.
Es können unten gegebenenfalls noch bestimmt PHP-Extensions vorausgesetzt werden. Wenn die hier gesetzten Bedingungen beim User nicht erfüllt sind, kommt es im Connect-Manager unten im schwarz-grünen Fenster zu einer Fehlermeldung & ein Hinweis wird ausgegeben, an welcher Hürde die Installation scheitert.
Dieser Bereich ist während der Paketerstellung der Dreh- und Angelpunkt da hier definiert wird wo die aktuellen Dateien & Verzeichnisse sich befinden und später auch bei der Installation hin kopiert werden.
In unserem Beispiel treffen wir dazu die folgenden Auswahlen:
Experimentieren Sie ruhig ein wenig mit den verschiedenen Auswahlmöglichkeiten, dass machen wir genau so um herauszufinden welche Aufgabe auf welches Verzeichnis abzielt. Eventuell werden wir aber in Kürze hier an dieser Stelle noch eine Übersichtstabelle einstellen.
Stimmen alle Ihre Angaben, können Sie oben über den Button “Daten speichern und Paket erzeugen” Ihre Extension abspeichern. Wenn Sie nun unter var/pear nachsehen, sollten Sie dort mindestens ein .tgz Archiv, die Mxperts_jQuery.xml & die package.xml vorfinden. Das .tgz ist das Paket was später auf Magento-Connect hochgeladen wird, es enthält die anderen 2 Dateien die ebenfalls gespeichert wurden.
Begeben Sie sich nach der Speicherung umgehend nach var/pear und öffnen Sie die package.xml! In dieser sehen Sie alle Zuweisungen und Einstellungen die Sie bisher getroffen haben.
Wenn Sie hier einen Fehler entdecken, dann korrigieren Sie diesen bitte bevor Sie ernsthaft ein Paket auf Magento-Connect einstellen wollen!
Es handelt sich bei der package.xml um eine Temporärdatei, die immer überschrieben wird wenn Ihre Extension erneut über das Backend gespeichert wird. Gleiches gilt für die “Mxperts_Jquery.xml”.
Das .tgz Paket wird sofern eine neue Versionsnummer angegeben wurde, jeweils erneut abgespeichert & das alte Paket bleibt unter var/pear erhalten.
Dieser Menüpunkt ist für die Ersterstellung noch nicht so wichtig - dieser bietet die Möglichkeit Ihre Extensions zu pflegen. Etwa eine neue Versionsnummer anzugeben, weitere Dateien einzubeziehen usw. Zum Laden einer lokalen Extension ist es notwendig das unter var/pear mindestens eine Datei gespeichert ist, die alle Informationen zu Ihrem Paket enthält.
In unserem Fall ist das die “Mxperts_Jquery.xml”. Wenn nun erneut durch Speicherung ein neues Paket erzeugt werden soll, müssen selbstverständlich unter den angegebenen Pfaden die relevanten Verzeichnisse & Dateien vorhanden sein. Wie Sie auf dem Bild sehen können, kann man ohne weiteres mehrere Extensions über dieses Interface pflegen & bei Bedarf laden.
Wenn Sie sich das .tgz Paket zu Testzwecken entpackt haben & auch in der package.xml alle Angaben stimmen, begeben Sie sich auf die Seite magentocommerce.com und loggen Sie sich in Ihr Benutzerkonto ein.
Gehen Sie dann über “My Account” in die Verwaltung Ihres Benutzerkontos. Auf der linken Seite finden Sie im Menü den Bereich “Magento Connect” mit je einem Link für den zu verwendenden Channel. In unserem Fall klicken wir auf Community Extensions, damit die Erweiterung später hier aufgeführt wird. Je nachdem ob Sie früher schon Magento-Extensions veröffentlicht haben oder nicht, werden hier alle Ihre Erweiterungen samt dem aktuellen Status aufgeführt.
- Live: die Extension ist auf Magento-Connect verfügbar & man kann Sie installieren.
- Pending: die Erweiterung ist noch nicht veröffentlicht & wird überprüft.
Beachten Sie bitte: Neue Extensions werden manuell freigeschalten, daher kann die Erstveröffentlichung deutlich länger dauern wie ein Update! In manchen Fällen auch mehrere Tage. Wenn Sie später Updates Ihrer Extension hochladen, werden diese genau in dem Moment veröffentlicht, nachdem sie hoch-geladen wurden. Daher sind Sie in jeden Fall in der Lage schnelle Bugfixes oder Erweiterungen funktioneller Natur bereit zu stellen und das innerhalb kürzester Zeit.
Um Ihre eigene Extension einstellen zu können, klicken Sie oben bitte auf “Upload a New Community Extension” oder alternativ “Upload a New Commercial Extension”.
Sie kommen zu einer Eingabemaske die bei der Ersterstellung geringfügig anders aus sieht. Im Beispiel
wurde über den Link “Edit” eine bestehende Extension zur Bearbeitung geöffnet um etwa den Text, zu verändern, eine neuere Version einzustellen oder allgemein dem Nutzer weitere Informationen zu Ihrer Extension bereit zu stellen. Um die Bedeutung der einzelnen Felder besser zu verstehen, sehen Sie sich bitte die Grafik an & pflegen Sie Ihre individuellen Daten entsprechend ein.
Anmerkung: Im Feld “Detailed Description” können Sie mit HTML arbeiten um somit auf Installationsanleitungen, Ihr Angebot oder sonst etwas zu verlinken. Ebenso ist es möglich per Inline-Styles ihre Beschreibung entsprechend zu formatieren.
In Step 2 erfolgt der Upload des Pakets, später können Sie alle Konfigurationen für bereits veröffentlichte Pakete bbequem über eine Seite pflegen.
Zusatzinfo: Pro Upload erlaubt Pear nur eine Versionsnummer! Wenn Sie zum Beispiel Ihre Version 1.1.0 hochladen & Ihnen einfällt, es wurde eine Datei vergessen, dann darf Ihr neu erstelltes Paket nicht auf die gleiche Release Nummer lauten, sondern muss mindestens 1.1.1 heißen. Bei Updates funktioniert es genau so.
Wenn Ihre Extension den “Pending” Status überwunden hat und dort “Live” steht, sollte Ihre Erweiterung ab diesem Moment zur Installation über den Connect-Manager & SSH bereit stehen.
Gratulation, Sie sind nun in der Lage Magento-Extensions in automatisierter Form anzubieten.
Die Community & auch Ihre Kunden werden es Ihnen danken und Sie bei weiteren Entwicklungen in Form von Erfahrungsberichten unterstützen!
Zugegeben, beim ersten Mal ist dieser Weg etwas holprig - jedoch denken wir von mxperts.de das es sich lohnt sich mit diesem Thema zu beschäftigen da man durch die Automatisierung per http://pear.php.net/group/ sehr gute Möglichkeiten hat, Dateien gezielt zu kopieren, Ausnahmebehandlung ohne eigene Scripte zu definieren & vieles mehr.
Liebe Grüße - Daniel Sasse
Hallo Daniel,
ohne Deine Erfahrung hätten wir jQuery Base niemlas in der Form bei Magento Connect publizieren können. Und ich muss dazu sagen, meine ersten Versuche ein Modul online zu stellen gingen voll in die Hose. Man muss schon sehr genau Deine Anweisungen befolgen - sonst hat man schnell einige “Leichen” im Benutzerkonto von Magentocommerce. Einmal angelegte Module kann man nicht selbst aus dem Benutzerkonto löschen. Zumindest habe ich dafür keine Möglichkeit gefunden.
Vielen Dank für den tollen Beitrag - er wird vielen eine große Hilfe sein.
Gruß
Johannes Teitge
Das kann ich nur unterstreichen !
(Leichen und viele Dinge die in die Hose gehen können)
Als ich kürzlich mein erstes Paket geschnürt habe (Sprachpaket) und es nicht gründlich genug überprüft hatte,
habe ich versehentlich das komplette default Theme mit einbezogen & es kam zu einen fetten ERROR während der Installation via Connect-Manager!
Der Fehler wurde aber schnell erkannt, daher konnten Rico und ich innerhalb von 5 Minuten ein Update bereit stellen.
Daher auf jeden Fall immer noch einmal Live testen, wenn das Paket zum download bereit steht !!!
Daniel