© elenabsl/Shutterstock.com
Produktdatenaustausch mit Hilfe der Pimcore-Schnittstelle PIM

Shopware 6 meets Pimcore 6


Heute gibt es unzählige Tools am Markt, die in den verschiedensten Bereichen Lösungen anbieten. Die Herausforderung besteht gegenwärtig darin, diese Tools miteinander interagieren zu lassen, um ein redundantes Pflegen von Daten oder eine manuelle Datenübertragung zu vermeiden.

Im E-Commerce-Bereich hat sich in den letzten Jahren insbesondere Shopware [1] einen Namen sowohl im Geschäft mit Privatkunden (B2C) als auch Geschäftskunden (B2B) gemacht. Pimcore [2] ist eine gute Lösung, wenn es um die Verwaltung von individuellen Produktdatenstrukturen geht. In Pimcore kann man sehr einfach Produktdatenstrukturen entwerfen, die man mittels eines View- und Rechtesystems individualisieren und steuern kann. Beide Systeme sind auf Basis von PHP 7 implementiert und nutzen das Framework Symfony als Basis. Somit findet jeder Entwickler mit Symfony-Kenntnissen einen schnellen Einstieg in beide Systeme. Die in Pimcore gepflegten Produktdaten möchte man zum Verkauf der Produkte nicht noch einmal in einem Shopsystem wie Shopware redundant pflegen. Daher gibt es eine von scope01 implementierte Schnittstelle [3] zur Übertragung von Produktdaten zwischen den beiden Systemen, die dieser Artikel näher beschreiben wird.

Produktdatenaustausch mit Hilfe von REST

Abbildung 1 zeigt vereinfacht die Kommunikation zwischen Shopware und Pimcore mit Hilfe des in Shopware 6 neu eingeführten Sync API [4]. Shopware hat dabei in der 6er-Version die bestehende REST-Schnittstelle komplett überarbeitet und verfolgt damit den „API first“-Ansatz [5]. Das Sync API ist Teil der neuen REST-Schnittstelle, mit der man Datenobjekte in Shopware aktualisieren kann. Ein Produkt, so einfach es sich erst einmal anhören mag, besteht nicht nur aus einem einfachen Datenobjekt, sondern aus vielen einzelnen Datenobjekten, wie zum Beispiel Medienobjekten oder Übersetzungen zum Produkt. Das Sync API ermöglicht es dabei, Objekte verschiedenster Art mit nur einem REST-API-Aufruf an Shopware zu übermitteln, um sie dort neu anzulegen oder zu aktualisieren.

trautmann_pimcore_1.tif_fmt1.jpgAbb. 1: Kommunikation zwischen Shopware und Pimcore via REST

Das PIM-Plug-in selbst bietet zur Realisierung dieser Funktion zwei eigenständige Plug-ins an. Das Plug-in ScopPimBundle wird dabei auf Pimcore-Seite installiert, während das Plug-in ScopPimPlugin auf Shopware-Seite installiert wird. ScopPimPlugin erweitert das Shopware REST API um weitere individuelle Funktionen, die zum Datenaustausch benötigt werden, die Shopware im Standard nicht anbietet. Hierbei erhält das API eine Funktion, mit der seine Erreichbarkeit einfach getestet werden kann. Ein weiteres Beispiel für eine neue API-Funktion vereinfacht die Abfrage von vorhandenen Übersetzungen zu Datenobjekten.

Das deutlich umfangreichere Plug-in ist ScopPimBundle. Es stellt in Pimcore die im Standard von Shopware enthaltenen Datenstrukturen von Produkten und allen sie umgebenden Objekten wie Kategorien oder Medien bereit. Zudem enthält das Plug-in alle Commands und Cronjobs, die zum aktiven Datenaustausch notwendig sind.

Abbildung 1 zeigt den optionalen Weg zur Übertragung von Produktdaten nach Pimcore: Dieser Weg ist als initiale Einrichtung für alle Nutzer gedacht, die bereits ihre Produktdaten in Shopware pflegen und nun ein PIM-System einführen möchten. Mit Hilfe eines initialen Datenimports können so alle Standardproduktdaten aus Shopware in Pimcore importiert werden, um ab dann dort die Produkte weiter zu pflegen.

Fallstudie: Übertragung eines Produkts mit dem Sync API

Das Produkt „Analoges Telefon UX15“ in Shopware ist in Abbildung 2 zu sehen. Es wurde zuvor in Pimcore gepflegt und anschließend in Shopware übertragen. Abbildung 3 zeigt den Admin von Pimcore am Beispiel der Pflege des gleichen Produkts.

trautmann_pimcore_2.tif_fmt1.jpgAbb. 2: Das Produkt im Shopware Frontend
trautmann_pimcore_3.tif_fmt1.jpgAbb. 3: Das Produkt in Pimcore

Die Darstellung der Datenobjekte in Pimcore kann mit unterschiedlichsten Eingabeobjekten und Formaten erfolgen. Da ein Produkt in diesem Beispiel sehr viele Datenfelder hat, werden sie zunächst wie im Bild gezeigt in verschiedenen Tabs angezeigt. Je nach Typ des jeweiligen Eingabefeldes wird es als Checkbox, Eingabefeld oder referenziertes Feld angezeigt. In unserem Beispiel sind Hersteller (Manufacturer) und Kategorien (Categories) referenzierte Felder, die auf andere Datenobjekte in Pimcore verweisen. In Pimcore werden übersetzbare und nicht übersetzbare Felder unterschieden. In Abbildung 3 ist ersichtlich, dass die Felder Artikelname (Article name) und Verpacku...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang