Magento – Eigene Erweiterung erstellen für Magento Connect

Heute sollte die erste kostenlose Magento Extension online gehen bzw. in Magento Connect direkt zur Verfügung gestellt werden. Da dies leider nicht ganz so einfach ist und ich keine einfache -im besten Fall deutsche- Anleitung gefunden haben, will ich hier den konkreten Vorgang einmal darstellen für alle, die zukünftig “nur” eben schnell eine Extension ohne viele Extras bereit stellen wollen.

Es soll also ein sog. Package also ein Paket erstellt werden, welches dann über Magento Connect installiert wird (wir nutzen hier die Magento CE Version 1.5.1.0). Voraussetzung ist, dass die jeweilige Extension auf dem Magento System installiert ist von dem sie gepackt werden soll!

Bild1. Im Magento Backend gehen wir zu System > Magento Connect > Paketerweiterungen

2. Unter dem Punkt “Paketinfo” werden nun allgemeine Informationen zur hochzuladenden Extension angegebenBild

– Hierzu gehört der Name der Extension, wobei hier keine Freizeichen verwendet werden sollen. Wichtig ist auch, dass die Groß- und Kleinschreibung beachtet wird.
– Weiterhin der sog. Channel. Hier wird aktuell für selbst erstellte Extensions / Module immer “community” eingetragen (bei Magento Version >= 1.5. Bei Magento Versionen < 1.5 muss hier “connect.magentocommerce.com/community” eingetragen werden)
– Bei “Unterstützte Versionen” einfach die entsprechende Auswahl machen. (STRG gedrückt halten für mehrere)
– Bei Kurzbeschreibung einfach einen kurzen Text eintragen. Im Gegensatz zur Magento Connect Kurzbeschreibung ist hier kein Maximum von 110 Zeichen vorgegeben. Auch bei der Beschreibung ist keine wirkliche Begrenzung vorgegeben. HTML ist jedoch nicht vorgesehen.
– Bei Lizenz den entsprechenen Lizenznamen eingeben. Als Beispiele GNU, BSD, AFL…oder eben auch eine eigene. Die komplette Übersicht gibt es z.B. bei Magento Connect oder auch im Wiki (Link weiter unten). Anschließend die URL zur Lizenz eintragen.

3. Als nächstes bei Versionsinformationen:
Bild
– Die Versionsinformationen ausfüllen. Dies ist rel. intuitiv.

4. Im nächsten Punkt werden die Autoren angegeben:
Bild
Hier wird bei Name wie gewünscht eingegeben. Bei Benutzer den Benutzer (User-, nicht Screen-) Namen eingeben, der bei Magentocommerce bzw. Magento Connect angemeldet ist. Bei eMail Adresse entsprechend die eMail Adresse.

5. Die Abhängigkeiten sind schon etwas weniger intuitiv:
Bild
– Bei der PHP Version muss eingetragen werden, welche Mindestvoraussetzung an diese besteht. Bei uns haben wir allgemein 5.2.0 eingetragen und als Maximum (gestestet) 6.0.0.
– Nun kann man noch Abhängigkeiten von anderen Magento Paketen und Erweiterungen eingeben. Wir haben vorausgesetzt, dass die Magento (Core) Version 1.4.1.1 als kleinst mögliche und die 1.7 als größtmögliche installiert sein muss, um die Extension installieren zu können. Bei der Installation über den Magento Connect Manager wird somit zuerst geprüft, ob eine dieser Versionen vorliegt. Ist dies nicht der Fall, bietet der Installer an die fehlenden Stellen zu installieren. Wenn nicht nötig sollte man dies weg lassen.

6. Nun kommt der wohl wichtigste Teil: Welche Dateien sollen eingepackt werden?
Bild
Um dies klarer zu machen, hier eine Übersicht der erforderlichen Dateien und Ordner unserer Magento Warenwirtschaft Starter Extension. Diese beinhaltet eigentlich zwei Extensions. Einmal eine allgemeine Commercers Verwaltungsextension und die eigentliche Warenwirtschaft Extension, die den Administrator im Backend befähigt Warenab- und zugänge detailliert pro Artikel zu sehen.

Für den Code der Grundextension den Ordner: app/code/local/Commercers/Commercers/
Für den Code der WaWiextension den Ordner: app/code/local/Commercers/Inventorymanagement/
Für das Layout der WaWiextension die Datei: app/design/adminhtml/default/default/layout/inventorymanagement.xml
Für die Aktivierung der Grundextension die Datei: app/etc/modules/Commercers_Commercers.xml
Für die Aktivierung der WaWiextension die Datei: app/etc/modules/Commercers_Inventorymanagement.xml
Für die deutsche Übersetzung der Grundextension die Datei: app/locale/de_DE/Commercers_Commercers.csv
Für die deutsche Übersetzung der WaWiextension die Datei: app/locale/de_DE/Commercers_Inventorymanagement.csv

Diese Daten sollen nun in die Extension gepackt werden.

Bei Inhalte > Ziel können nun verschiedene Arten von Daten ausgewählt werden:

Magento Local module file dies bezieht sich auf den Ordner app/code/local
Magento Community module file dies bezieht sich auf den Ordner app/code/community
Magento Core team module file dies bezieht sich auf den Ordner app/code/core
Magento User Interface (layouts, templates) dies bezieht sich auf den Ordner app/design
Magento Global Configuration dies bezieht sich auf den Ordner app/etc
Magento PHP Library file dies bezieht sich auf den Ordner lib
Magento Locale language file dies bezieht sich auf den Ordner app/locale
Magento Media library dies bezieht sich auf den Ordner media
Magento Theme Skin (Images, CSS, JS) dies bezieht sich auf den Ordner skin
Magento Other web accessible file dies bezieht sich auf den Magento Root Ordner
Magento PHPUnit test dies bezieht sich auf den Ordner tests
Magento other dies bezieht sich auf den Magento Root Ordner

Im ersten Schritt muss nun also geschaut werden was für ein Datentyp benötigt wird. Da sich z.B. unser Code für die Grundextension in einem Ordner im app/code/local Verzeichnis befindet, nehmen wir in diesem Fall das Magento Local module file und geben im Feld Pfad den verbleibenden Pfad relativ zum schon definierten app/code/local ein. Hier also Commercers/Commercers. Da es sich um einen Ordner und nicht um eine einzelne Datei handelt, wird bei “Art” dann “Rekursiv Verzeichnis” ausgewählt. Somit wird festgelegt, dass alle Datein und Ordner in und unter dieser Verzeichnisangabe eingeschlossen werden. Durch die Eingabe von “Eingeschlossen” und “Ignorieren“, könnte man noch genaue Details definieren. Diese werden aber nur genutzt, wenn “Rekursiv Verzeichnis” gewählt wurde und nicht “Datei“, die andere Möglichkeit, um einzelne Dateien zu wählen. Die Eingabe für die WaWiextension ist entsprechend.

Um dann das Layout XML der Extension (eine Datei) mitzunehmen, wird diese als Art “Datei” ausgewählt und Magento User Interface (layouts, templates) gewählt, vervollständigt vom Pfad direkt zu der XML Datei. Hier also adminhtml/default/default/layout/inventorymanagement.xml

Da auch die restlichen Dateien einzeln sind, wird so vorgegangen und der entsprechende Ziel Typ gewählt. Bei den Sprachpaketen hätte man auch die Möglichkeit das “Eingeschlossen” Feature zu nutzen, wenn man eine Übersetzungsdatei bei uns z.B. “Commercers_Commercers.csv in de_DE, en_US, en_GB und eventuell weiteren Ordnern liegen hat. Dann darf bei Pfad nichts eingetragen werden, vorne natürlich Magento Locale language file dann Rekursiv Verzeichnis und nun das wichtige: Bei “Eingeschlossen” dann “#Commercers_Commercers.csv#”. Nun würden alle Ordner mitgenommen inkl. der Datei, die diese enthalten. Bei uns ist es nur eine und daher brauchen wir dies nicht.

7. Wenn alles korrekt eingetragen ist, kann das Paket durch Klicken auf “Daten speichern und Paket erzeugen” abgeschlossen werden. Über “Lokales Paket laden” könnten bereit vorhandene Pakete geladen werden, um diese zu aktualisieren oder zu editieren.

8. Nach dem Erstellen des Paketes sollten im Magento Root Verzeichnis unter var/connect (oder var/pear) die Daten des Pakets liegen (man kann auch einen alternativen Pfad über “Speichern unter…” anlegen).

9. Anschließend loggt man sich mit seinem Benutzerkonto bei Magento Connect ein und geht dort auf sein Profil und auf “Developers“.

10. Nun auf “Add New Extension” klicken.

BildNun werden hier wieder alle relevanten Daten eingegeben wie Name, Beschreibungen etc. Es gibt jedoch ein paar “Spezialitäten” dieses Bereiches (abgesehen davon dass er extremst langsam ist).

– So können die “Extension Categories” erst dann gewählt werden, wenn man vorher auf “Show/Hide Subcategories” klickt. Hier können dann maximal drei ausgewählt werden.

– “Is free” und andere Daten können unten erst erfasst werden, wenn man die kompatiblen “Versions” gewählt hat.
– Wenn man anschließend auf “Is free” klickt, muss oben ein “Extension Key” eingegeben werden. Dieser MUSS exakt gleichlautend sein mit dem Namen der eben erstellten Extension. Inkl. aller Underlines etc.
– Anschließend auf “Save” klicken.
– Die Extension selber wird dann über den Reiter “Versions” hochgeladen. Hierzu nur die .tgz Datei wählen. Der Name dieser besteht normalerweise auf dem Extension Namen und der Version.
– Hier scheint man beachten zu müssen, dass (obwohl man bei der Erstellung Versionen 1.4 bis 1.7 angegeben hat), dass man für Magento Versionen <1.5 eine andere Version bereit stellen muss. Diese Version findet man im Ordner var/pear. Diese Version wird dann in Magento Connect mit der Kompatibilitätsangabe 1.4, 1.4.1.1, 1.4.2 hochgeladen. Dann noch (nach dem Upload) die Version aus dem var/connect Ordner mit der Information der Version 1.5…..1.7.
– Nun kann man noch weitere Screenshots hinzufügen.
– Ist alles hochgeladen, muss die Extension noch durch das Team von Magento freigegeben bzw. approved werden. Hierfür auf “Submit for Approval” klicken. Dann wird mitgeteilt, dass dieses bis zu 10 Tagen dauern kann….(erfreulicherweise dauert der Extension Upload nicht ganz so lange 🙂 )

Weitere Informationen gibt es HIER und auch HIER. Die allgemeinen Vorschriften und Anleitungen gibt es HIER als PDF.

Zu hochgeladenen und beschriebenen Extension der Warenwirtschaft Starter geht es HIER.

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

Leave a Reply

Your email address will not be published. Required fields are marked *