Der Import von Bundle-Produkten (auch „Bündel-Produkte“ genannt) ist mit dem Magento-Standard nicht möglich – weder über eine API, noch über ImportExport oder gar DataFlow. Seit Kurzem ist es über mein Modul AvS_FastSimpleImport dennoch möglich. Dieser Artikel beschreibt das notwendige Vorgehen zum Import von Bundle-Produkten.
Über AvS_FastSimpleImport
Das Modul ist unter http://www.avs-webentwicklung.de/nc/blog/artikel/magento-import-mit-der-neuen-schnellen-import-schnittstelle-fuer-produkte-und-kunden.html ausführlich beschreiben. Kurz gesagt handelt es sich um eine Möglichkeit, die schnelle Magento-Schnittstelle „ImportExport“ über beliebige PHP-Skripte und -module anzusprechen und Produkt- und Kundendaten in Magento zu importieren. Die Daten werden dabei in einem Array erwartet, statt in CSV-Dateien, wie im Original. Das Array muss dabei nach einem bestimmten Format aufgebaut sein, das ich unter http://www.webguys.de/magento/turchen-19-produktimport-mit-der-importexport-schnittstelle/ beschrieben habe. Ein einfaches „Simple Product“ kann dabei wie folgt importiert werden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$data = array( array( 'sku' => '1234567', '_type' => 'simple', '_attribute_set' => 'Default', '_product_websites' => 'base', 'name' => 'Default', 'price' => 0.99, 'description' => 'Default', 'short_description' => 'Default', 'weight' => 0, 'status' => 1, 'visibility' => 4, 'tax_class_id' => 2, 'qty' => 76, ), ); Mage::getSingleton('fastsimpleimport/import') ->processProductImport($data); |
Selbstverständlich können auch tausende Produkte in einem Array übergeben werden.
Das Modul kann man kostenlos bei GitHub herunterladen. Dort sind auch alle Funktionen kurz beschrieben.
Bundle-Produkte
Ein Bundle fasst mehrere Unterprodukte zu einem zusammen. Ein aussagekräftiges Beispiel findet sich im offiziellen Magento-Demo-Shop beim Produkt My Computer. Ein Bundle beinhaltet dabei eine oder mehrere Optionen (beispielsweise „Case“ im Beispiel), die jeweils eine Gruppe von Produkten beinhalten. Je nach Art der Optionsauswahl (Radio-Button, Dropdown, Checkboxen, Mehrfachauswahl) wählt der Kunde kein, ein oder mehrere Unterprodukte. Der Preis wird „on the fly“ als Summe der Preise der ausgewählten Produkte berechnet.

Backend-Ansicht eines Bundle-Produktes
Eine häufige Verwendung ist, dem Kunden mehrere Produkte gemeinsam zum günstigeren Festpreis anzubieten, ohne dass der Kunde hier Unterprodukte auswählen darf/muss. Hierfür wird das Feld „Benutzerdefinierte Menge“ auf „Nein“ gestellt und die gewünschten Produkte als „Standard“ definiert. Der Preis sollte dann natürlich nicht dynamisch kalkuliert werden, hierfür gibt es eine Einstellung im Tab „Preise“.
Der Import
Diese Grundlagen sollten bekannt sein, wenn man Bundle-Produkte importieren will. Alle oben aufgeführten Einstellungen kann man über den Import treffen. Sowohl die Optionen als auch die Unterprodukte können mehrfach vorkommen. Außerdem müssen dem Produkt zwei zusätzliche Attribute zugewiesen werden: „price_view“ und „price_type“. Ein Beispiel sagt mehr als tausend Worte:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
$data = array( array( 'sku' => '4711', '_type' => 'bundle', '_attribute_set' => 'Default', '_product_websites' => 'base', 'name' => 'Bundle', 'price' => 0.99, 'description' => 'Default', 'short_description' => 'Default', 'weight' => 0, 'status' => 1, 'visibility' => 4, 'tax_class_id' => 2, 'qty' => 100, 'is_in_stock' => 1, 'price_view' => 'as low as', 'price_type' => 1, '_bundle_option_required' => 1, '_bundle_option_position' => 1, '_bundle_option_type' => 'radio', '_bundle_option_title' => 'Option 1', '_bundle_product_sku' => '1234567', '_bundle_product_position' => 1, '_bundle_product_is_default' => 1, '_bundle_product_qty' => 1, '_bundle_product_can_change_qty' => 0, ), array( '_bundle_option_title' => 'Option 1', '_bundle_product_sku' => '1234568', '_bundle_product_position' => 2, '_bundle_product_is_default' => 1, '_bundle_product_qty' => 3, '_bundle_product_can_change_qty' => 0, ), ); Mage::getSingleton('fastsimpleimport/import'); ->processProductImport($data); |
Hier wird eine Option mit zwei Unterprodukten eingefügt. Für weitere Optionen können ebenso weitere Zeilen eingefügt werden. Wichtig ist, dass die Zuordnung eines Unterprodukts über das Feld „_bundle_option_title“ erfolgt – ist dieses bei zwei Unterprodukten gleich, landen sie auch in der gleichen Option.
Eine kurze Erläuterung der einzelnen Felder:
Produktspezifische Felder:
- _type: Für Bundle-Produkte „bundle“.
- price_view: Bestimmt, wie der Preis dargestellt wird – entweder als „ab“-Preis (Wert „As low as“) oder als Preisspanne mit dem niedrigsten und höchsten Preis (Wert „Price Range“).
- price_type: Fester Preis (Wert 1) oder dynamischer Preis (Wert 0)
Optionen:
- _bundle_option_required: Bestimmt, ob die Option eine Pflichtoption ist. Werte sind 0 („Nein“) oder 1 („Ja“).
- _bundle_option_position: Die Position der Option
- _bundle_option_type: Der Typ der Option. Mögliche Werte: radio, checkbox, select, multi.
- _bundle_option_title: Der Titel der Option (z.B. „Case“ im Beispiel „My Computer“). Lokalisierung ist hier nicht möglich.
Unterprodukte:
- _bundle_product_sku: Die Artikelnummer des Unterproduktes
- _bundle_product_position: Die Position des Artikels innerhalb der Artikel dieser Option
- _bundle_product_is_default: Bestimmt, ob dieses Produkt vorausgewählt ist (1) oder nicht (0)
- _bundle_product_qty: Die voreingestellte Menge des Produktes
- _bundle_product_can_change_qty: Bestimmt, ob die voreingestellte Menge vom Kunden angepasst werden kann (1) oder nicht (0)
Dank
Mein Dank für die Umsetzung dieser Funktion geht an Daniël Sloof (@daniel_sloof auf Twitter und @danslo auf GitHub).

Autor: Andreas von Studnitz
Andreas von Studnitz ist Diplom-Informatiker, Magento-Entwickler und Geschäftsführer von integer_net. Seine Schwerpunkte sind Entwicklung, Beratung und die Durchführung von Schulungen. Er ist Magento 2 Certified Professional Developer Plus und hat darüber hinaus weitere Magento Zertifizierungen für Magento 1 und Magento 2. Sowohl im Jahr 2019 als auch 2020 wurde Andreas als Magento Master in der Kategorie „Mentor“ ausgezeichnet.
Wie lassen sich shipment_type, sku_type und weight_type in Magento 1 über den FastsimpleImport für bundle Produkte setzen?
Vielen Dank im voraus!