Hallo,
ich bin gerade dabei eine Middleware zum Import/Synchronisieren von Daten aus einem ERP System zu schreiben. Ich komme soweit ganz gut voran, scheitere aber aktuell an den Kategorien. Das Importieren ist im Prinzip kein Problem, jedoch wird beim Anlegen der Kategorie über die API kein Layout festgelegt, was dazu führt, dass im Frontend nur eine leere Seite statt der Produktliste angezeigt wird.
Wie kann ich also ein Layout für die Kategorie, ohne das manuell setzen zu müssen?
Da die Dokumentation ja immer noch mehr als dürftig ist, bin ich für jeden Tipp dankbar.
Wie legst du die Kategorien an? Direkt über die „/category“ Endpunkt oder über den „/_action/sync“ Endpunkt?
Ich hab gerade auch das Problem und hab zwar einen Workaround, der ist aber hässlich.
Ich erstelle die Kategorien über den „/_action/sync“ Endpunkt, indem ich wie in der Dokumentation beschrieben die Kategorien direkt dem Artikel zuordne. Shopware erzeugt dann die Kategorie falls diese nicht existiert.
Damit ich diese einfach wiederfinde und keine Duplikate erzeuge generiere ich mir die IDs selbst und setze die „parentId“. Mein Workaround ist folgender: Ich suche mir die Layout Shopware-ID heraus (per Request an den endpunkt /cms-page) und setze diese direkt in der Kategorie in das Feld „cmsPageId“.
Ohne die cmsPageId wäre dies viel besser, im default sollte eine über die API erzeugt Kategorie das Layout der Oberkategorie erben. Leider ist dies aber nicht der Fall oder ich weiß nicht wie ich Shopware konfigurieren muss damit es funktioniert.
Vielen Dank für den Hinweis mit der cmsPageId. Das war die Verbindung, die ich übersehen habe. Ich hatte nach Layout o.ä. gesucht.
Ich lege die Kategorien über den /api/category Endpoint an. Das Layout übergebe ich nun manuell per Parameter (ein festes Layout). Duplikate vermeide ich weniger elegant über ein vorheriges Auslesen aller Kategorien per GET, gefolgt von Array Mapping der Custom Fields (ursprüngliche interne Kategorisierung/Sortierung der ERP, die angebunden werden soll).