FastSimpleImport für Magento 2

Jan
25
2016

Beim Magento-2-Hackathon in Paderborn am 23. und 24. Januar 2016 fand sich eine Gruppe von 9 Entwicklern zusammen, die es sich zur Aufgabe machten, die Importfunktion von Magento 2 zu verbessern. Wir entschieden uns dazu, AvS_FastsimpleImport (für Magento 1) als Beispiel zu nutzen und begannen, es für Magento 2 umzubauen. Die Hauptfunktionen von AvS_FastSimpleImport sind:

  1. Starten des Imports über die Kommandozeile oder in einem eigenen Modul
  2. Keine Restriktion auf CSV-Dateien, sondern die Nutzung von PHP-Arrays
  3. Vereinfachung des komplizierten Importformats durch Nutzung von verschachtelten Arrays statt mehrerer Zeilen für einen einfachen Artikel
  4. Ermöglichen weiterer Importtypen: Bündelartikel, Kategorien und Beziehungen zwischen Produkten und Kategorien
  5. Partielle Indizierung für importierte Produkte
  6. Download von Bildern über HTTP während des Imports
  7. Verbesserte Fehlermeldungen
  8. Viele kleine Verbesserungen

Da Punkt 5 und 6 sowie der Import von Bündelprodukten aus Punkt 4 mittlerweile bereits im Standardimport von Magento 2 integriert sind, mussten wir uns darum nicht mehr kümmern. Wir entschieden uns, die verbleibenden Aufgaben auf zwei separate Module zu verteilen:

  1. FireGento_FastSimpleImport2 für alles, was sich damit befasst, den Import über eigenen Code zu starten und PHP-Arrays als Quelle zu nutzen (1, 2, 3)
  2. FireGento_ExtendedImport2 für alle weiteren Verbesserungen, welche auch bei einem Import über das Backend genutzt werden können (4, 7, 8)

An jedem Modul arbeiteten jeweils 3 Entwickler.

Zusätzlich haben wir uns dazu entschieden, das Importformat des regulären Magento 2 ImportExport Moduls zu analysieren, da es hierzu bisher keine offizielle Dokumentation gibt. Das Ziel war es, eine flächendeckende Dokumentation zu schaffen, wie sie für Magento 1 vorhanden ist (Deutsch / Englisch). Eine erste Version wird wahrscheinlich bald veröffentlicht.

FireGento_FastSimpleImport2

Um die Basis für den Import auf eigenem Code zu schaffen, der PHP-Arrays nutzt, haben drei von uns zusammengearbeitet: Elias Kotlyar (mediawave), Nils Preuß (Polo Motorrad) und Andreas von Studnitz (integer_net). Am Ende des Tages erreichten wir das Hauptziel: wir haben ein Modul geschaffen, über das der Import mit eigenem Code ausgeführt werden kann. Dieses Modul ist auf GitHub verfügbar unter https://github.com/firegento/FireGento_FastSimpleImport2. Es kann wie folgt genutzt werden:

Natürlich kann und soll die $productsArray-Variable an die eigenen Anforderungen angepasst werden – die Daten müssen nicht hartcodiert sein. Stattdessen können sie aus XML Dateien, einer externen Datenbank oder aus anderen Quellen mit Hilfe von PHP geladen und transformiert werden.
Für den Fall, dass nur geringe Magento Erfahrungen vorhanden sind und man nicht weiß, wo der Code eingefügt werden soll, haben wir ein kleines Beispielmodul erstellt, verfügbar unter https://github.com/firegento/FireGento_FastSimpleImport2_Demo. Es bringt einige neue Kommandozeilenmethoden mit, die wie folgt genutzt werden können:
bin/magento fastsimpleimport2demo:products:importsimple
bin/magento fastsimpleimport2demo:products:importconfigurable
bin/magento fastsimpleimport2demo:products:deleteall
bin/magento fastsimpleimport2demo:customers:import
bin/magento fastsimpleimport2demo:customers:deleteall

Das Resultat sieht dann so aus:

Import über die Kommandozeile

Zusätzlich kann das Verhalten des Imports konfiguriert werden. Die Einstellungsmöglichkeiten dafür sind im Magento 2 Backend unter Stores / Configuration / Services / FastSimpleImport 2 zu finden:

Configuration _ Settings _ Stores _ Magento Admin

FireGento_ExtendedImport2

Das Modul ExtendedImport unter https://github.com/firegento/FireGento_ExtendedImport2 deckt alle Verbesserungen ab, die sowohl über das Backend als auch über FastSimpleImport2 genutzt werden können. Es wurde von Fabian Schmengler (integer_net) und Robert Fenger (VOTUM) gestartet.

Während der Funktionsumfang von FastSimpleImport2 recht klar und fest umrissen, wird das ExtendedImport-Modul in Zukunft weiter wachsen. Wir haben mit den ersten einfachen Erweiterungen begonnen, welche fortlaufend ergänzt werden. Einige unserer Ziele:

  • Verbesserte Fehlermeldungen (die ersten Verbesserungen sind bereits implementiert)
  • Erstellung von Attributoptionen während des Imports
  • Import von Kategorien als separater Import
  • Löschen von Attributwerten (wenn ein Feld leer bleibt, wird es standardmäßig ignoriert)

Natürlich ist jede Hilfe bei der Erweiterung des Imports herzlich willkommen. Alle Ideen und Gedanken dazu helfen uns, ein nützliches Tool für die Magento-Community zu schaffen. Also teilt sie gerne mit uns!

Comments

  • 25. January 2016

    Sehr cool, danke für das Modul!
    Mein aktueller Mage2 Shop hat nur ein Produkt – daher werde ich es erstmal nicht brauchen. Aber der nächste Shop kommt bestimmt.

  • Arne
    27. January 2016

    Kann ich nur zustimmen. Sauber Arbeit! Wird direkt getestet.

  • 14. February 2016

    Hallo Roge hier,
    ich habe vorher nur mit xtcomerce (php basis) gearbeitet. Der umgang mit Magento2 ist für mich noch nicht so einfach da bei mir noch nicht der Groschen gefallen ist wie ich erwiterungen umsetze (php framework basis).
    1. Der Import von einer URL währe nett um z.b. ein Lagerbestands Update zu Automatiesieren
    2. Formate .xml

  • 23. November 2016

    Super Arbeit.
    Dank dem Modul können wir unseren Produktimport direkt darauf aufbauen um Produkte schnell und effizient in die Magento Datenbank zu bringen. Das hat unter Magento 1 sehr gut funktioniert und darauf bauen wir auch unter Magento 2.

  • 8. June 2017

    Das Modul ist eine große Sache. Welche Aussagen zur Performance lassen sich bei >100k einfachen Produkten machen?

Leave a Reply to Andreas Rulle Cancel reply

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