Daten aus .CSV-Files mithilfe der Feeds und Commerce Feeds Module migrieren

Im letzten Artikel haben wir ein neues Modul programmiert, das .csv-Dateien aus Daten eines externen Servers erstellt. Nun müssen wir diese Daten in unser Live-System migrieren. In einem ersten Schritt müssen wir einen Commerce Store erstellen, zu dem unsere Produkte und Produktvarianten gehören. Andernfalls können sie nicht importiert werden.

Commerce product und product variations

Danach benötigen wir einen Commerce Product Typ und einen Commerce Product Variation Typ. Ein Product Typ definiert ein allgemeines Produkt, während ein Product Variation Typ verschiedene Variationen des Product Typen speichert. D.h. "Eine Baumwollhose" wird als Product Typ definiert, während "Eine Baumwollhose in rot/blau/gelb, Größe s/m/l verschiedene Product Variation Typen datstellen.

Unser Product Typ ist ein "Room" und als Felder möchten wir eine ID, einen Titel und ein Bilder-Karussell speichern, das den Room präsentiert.

Unsere Product Variation Typ muss verschiedene Varianten eines "Rooms" darstellen. Hier benötigen wir auch die ID und zusätzliche Felder für einen Titel und eine Beschreibung der "Room"-Variante.

Feeds Einstellungen

Nachdem diese Typen definiert sind, müssen wir zwei dazugehörige Feed Typen definieren. Beide Feed Typen benötigen fast die gleichen Einstellungen um einwandfrei zu funktionieren.

 

Feeds Tamper basic settings
Der Fetcher ist 'Directory' als Parser, wählen wir 'CSV'. Als Preprocessor wählen "Product" für unsere Räume und "Product Variation" für unsere Room Varianten. Als Product Typ/Product Variation Typ wählen wir die Commerce Typen, die wir gerade im ersten Schritt angelegt haben.

Die anderen Einstellungen können nach Belieben geändert werden, außer der default delimiter in den Parser-Einstellungen. Hier muss ein Komma(,) gewählt werden, weil wir das in unseren .csv-Dateien so gesetzt haben.

Nun muss das Feed Mapping eingerichtet werden. Die Feeds funktionieren nur, wenn alle Pflichtfelder korrekt zugeordnet wurden. Wir müssen 'Feed: Authored by' und 'Feed: Authored on' als Felder angeben. Zusätzlich benötigen wir 'Status' und 'SKU'. Dies sind die minimalen Einstellungen die wir benötigen, damit Feeds ausgeführt werden können. Darüber hinaus brauchen wir für unseren Product Typen 'Room' zusätzlich das Feld "Store". Andernfalls kann Commerce das Produkt nicht zuordnen und importiert es nicht. Store, und Status müssen aus den .csv-Dateien importiert werden,  'Feed: Authored by' und 'Feed: Authored on' müssen das nicht. Store muss der Commerce Store sein, den wir für unseren Product Typ und unseren Product Variation Typ angegeben haben.

 

feeds mapping

 

Wir wählen alle anderen Felder aus der CSV-Datei aus, die wir unserem Product Typ/Product Variation Typ zuordnen und speichern möchten.

Wenn wir jetzt importieren würden, würden die Variationen nicht erscheinen. Sie sind mit ihren entsprechenden Produkten durch den in der .csv-Datei definierten sku verbunden, aber das Feed-Modul benötigt Hilfe, um diese Verbindung Link zu verstehen. Das Modul Feeds Tamper erstellt einen weiteren Tap "Tamper" in den Feeds Typ Einstellungen. Hier erstellen wir ein Plugin für unseren Feed Typ "Room". Wir wählen explode und als Feld wählen wir die sku. Als Trennsymbol wählen wir '|', weil wir das bei der Erstellung der .csv-Dateien gewählt haben.

 

feeds tamper

 

Feeds erstellen und importieren

Nachdem wir die Feed Typen definiert haben, müssen wir daraus tatsächliche Feeds erstellen. Dazu gehen wir zu Content > Feeds. Alles, was wir brauchen ist der Pfad zu unserer .csv-Datei und das korrekte Trennzeichen ','. Nachdem wir einen Feed für die Produkte und einen für die Produktvarianten erstellt haben, müssen wir sie nur noch aktivieren. Feeds gehören zum Content der Website, d.h. sie müssen wie andere Content auch importiert werden. Ansonsten verliert man sie und muss sie neu einrichten.

 

feeds

 

Beim eigentlichen Import ist die Reihenfolge wichtig. Wir müssen die Produktvarianten vor den Produkten importieren, sonst werden sie nicht in der Oberfläche angezeigt. Das Feeds Modul erstellt eine temporäre Tabelle in der Datenbank mit den neu importierten Produktvarianten und vergleicht deren Skus mit Skus von neu importierten Produkten um sie miteinander zu verbinden. Es funktioniert nicht umgekehrt.

Programmierer
Janis Bullert

Neuen Kommentar schreiben