API Import Variante Bildwechsel

Hi, ist es möglich, dass in 4.2 wenn man Artikel per API importiert der Bildwechsel bei Konfiguratorartikeln nicht mehr funktioniert ? Ich importiere z.B. Artikel mit zwei Farben und mehreren Größen. Mit dem Import wurde der AREtikel, die Varianten und der Konfigurator richtig importiert, auch die Bilderzuordnung scheint im backend richtig zu sein. Konfigurator ist auf Auswahl gesetzt. Wenn ich jedoch bei der Auswahl die andere Farbe wähle, bleibt das Vorschaubild aktiv. Gruß Edin

Kann jemand bestätigen, dass dies funktioniert, unabhängig davon, ob und wie man die Daten importiert hat ? Gruß Edin

Also ich konnte das Problem weiter eingrenzen: nach dem API Import von einem Varianten / Konfigurator Artikel, werden im Backend wenn ich auf den Artikel/Bilder gehe, für jedes Bild die Richtige Zuordnung erstellt (Auch werden die Varianten und Konfigurator erstellt). Wenn ich also das Blaue Bild anwähle und auf “Konfiguration Öffnen” klicke, Listet die Übersicht die Varianten L-Blau, XL-Blau, XXL-Blau auf, beim Roten ebenfalls das gleiche nur mit halt L-Rot … usw. Wenn ich im Frontend den Artikel ansteuer wird beim Wechsel der Farbe, das Bild jedoch nicht gewechselt. Es werden auch schon vor der Auswahl alle Bilder unterhalb des großen Bildes angezeigt, als ob sie dem Artikel und nicht den Varianten zugeordnet wären. Wenn ich jedoch, nochmal auf “Konfiguration öffnen” eines jeden Bildes anklicke und jedes Element in der Auflistung einfach markiere und dann auf Speichern klicke, dann funktioniert es mit dem Bildwechsel. Also ich klicke da weder auf Zuordnung hinzufügen oder sonstiges, sondern wirklich nur Häckchen nochmal setzen und auf Speichern. Die Struktur wurde beim API Import erstellt. Die Bilder im Frontend verschwinden auch dann unterhalb des aktuellen großen Bildes, und beim Farbenwechsel wird das passende Bild geladen. D.h. meiner Meinung nach vergesse ich beim Import irgendetwas zuzuweisen oder da ist irgendwo n Bug, oder ? Kann mir da einer ein Hinweeis geben, was das sein könnte was ich beim Import eventuell vergesse, oder auch einfach n Tipp in welcher Tabelle in der Datenbank etwas geändert wird, wenn ich bei der oben genannten Struktur lediglich die Häken setze und dann auf Speichern klicke ? Viele Grüße, Edin

Hi, es gibt zwei Möglichkeiten Bild-Konfigurationen zu hinterlegen. Um festzustellen wo bei dir der Fehler liegt, müsste ich wissen wie du vorgegangen bist. Möglichkeit 1: $articleData = array( 'name' ...., 'images' =\> array( array( 'mediaId' =\> 236, 'options' =\> array( array( array('name' =\> '0,2 Liter') ) ) ) ) ) Bei dieser Möglichkeit musst du einen weiteren Request senden um die Parent-Child Einträge generieren zu lassen. Hintergrund: Für eine Performante Selektierung im Frontend werden in s_articles_img Einträge für Variantenbilder generiert. Daher musst du einen der folgenden Rest-Calls nachsenden: (mit der Artikel ID/Nummer) PUT /api/generatevarianimages/1 PUT /api/generatevarianimages/SW-200?useNumberAsId=true Möglichkeit 2: $articleData = array( 'name' .... 'variants' =\> array( 'configuratorOptions' =\> array( ... ) 'images' =\> array( array('mediaId' =\> 236), ... ) ), ) Bei dieser Variation wird der Parent-Child Eintrag direkt erzeugt, da hier nur 1 Eintrag für das Image generiert werden muss. Hoffe dein Problem hat sich damit erledigt. Sollte dies nicht der Fall sein, poste bitte dein Artikel Array das du an die Rest API sendest. Ein Auszug aus der s_articles_img wäre zusätzlich auch sehr hilfreich (für den entsprechenden Artikel) Gruß Oliver

Hi Oliver, also ich gehe mehr in die Richtung der ersten Variante glaub ich, wobei ich anstelle von media_id mit link arbeite, da ich die ids nicht kenne. Hier ein Ausschnitt von meinem Artikel Die Tabelle war ein guter Hinweis, da ist definitiv das Problem zu erkennen, denn es werden nicht parent_id und article_detail_id Spalten gesetzt: Sobald ich wie oben beschrieben, die Zuordnungen nachträglich noch mal bestätige, werden in der Tabelle neue Zeilen erstellt mit folgendem Inhalt: Bis auf die Nutzung von link anstelle der media_id sehe ich kein Unterschied zu deiner ersten Variante (werde aber nochmal nachschauen). D.h. mir fehlen diese zusätzlichen REST Calls. Wie würde man diese als ein Array denn abbilden ? Die zweite Variante gefällt mir aber schon ganz viel besser. Kann ich denn die auch mit der link Variante verwenden anstelle der media_id ? Gruß Edin

Okay, also wenn ich auf die zweite Variante wechsele, klappt das auch, nur dann wird pro Variante zwei Einträge in der s_article_img Tabelle erstellt. und Wenn ich auf den Artikel im Backend gehe, und dann auf Bilder, dann existiert ebenfalls pro Variante ein Bild, bei drei Farben und 5 Größen jeweils 15 Bilder. D.h. das gleiche Bild wird für verschiedene Größen nicht gruppiert. Jede Bild Konfiguration erstell also eigenene Eintrag.

Hi, also ich hab das Problem gelöst, mit der ersten Variante, allerdings heisst es nicht put /api/generatevarianmages/1 sondern put /api/generateArticleImages/1 Allerdings bin ich auf ein anderes Problem gestossen. Denn in etwa hälfte meiner Artikel erzeugen eine fehlerhafte EInträge in der s_article_img_mapping_rules. Drunter ist ein Artikel mit so einer fehlerhaften Zuordnung: [code] [name] => Artikel A [metaTitle] => Artikel A [active] => 1 [supplier] => Bontrager [description] =>

Hast du dir schon mal gewünscht, dass du deine Lieblingshosen oder -shorts bequemer zum Fahrradfahren machen kannst? Bontragers Sport Cycleliner mit leichter Sitzpolsterung, dem flexiblen Taillenbund…

[descriptionLong] =>
Beschreibung
[categories] => Array ( [0] => Array ( [id] => 1576 ) ) [mainDetail] => Array ( [number] => 7610 [unitId] => 9 [ean] => 745889656060 [inStock] => 0 [prices] => Array ( [0] => Array ( [customerGroupKey] => EK [price] => 29.99 ) ) ) [taxId] => 1 [filterGroupId] => 1 [propertyValues] => Array ( [0] => Array ( [option] => Array ( [name] => Jahr ) [value] => 2014 ) [1] => Array ( [option] => Array ( [name] => Geschlecht ) [value] => Herren ) ) [configuratorSet] => Array ( [name] => Artikel - Set [type] => 1 [groups] => Array ( [0] => Array ( [name] => Größe [options] => Array ( [0] => Array ( [name] => L ) [1] => Array ( [name] => M ) [2] => Array ( [name] => S ) [3] => Array ( [name] => XL ) [4] => Array ( [name] => XXL ) ) ) [1] => Array ( [name] => Farbe [options] => Array ( [0] => Array ( [name] => schwarz ) ) ) ) ) [images] => Array ( [0] => Array ( [link] => http://trtest//bilder/schwarz.jpg [options] => Array ( [0] => Array ( [0] => Array ( [name] => L ) [1] => Array ( [name] => schwarz ) ) [1] => Array ( [0] => Array ( [name] => M ) [1] => Array ( [name] => schwarz ) ) [2] => Array ( [0] => Array ( [name] => S ) [1] => Array ( [name] => schwarz ) ) [3] => Array ( [0] => Array ( [name] => XL ) [1] => Array ( [name] => schwarz ) ) [4] => Array ( [0] => Array ( [name] => XXL ) [1] => Array ( [name] => schwarz ) ) ) ) ) [variants] => Array ( [0] => Array ( [isMain] => 1 [number] => 411243 [prices] => Array ( [0] => Array ( [customerGroupKey] => EK [price] => 29.99 ) ) [inStock] => 0 [active] => 1 [unitId] => 9 [ean] => 745889656060 [configuratorOptions] => Array ( [0] => Array ( [group] => Größe [option] => L ) [1] => Array ( [group] => Farbe [option] => schwarz ) ) [attribute] => Array ( [attr18] => 86% Nylon / 14% Elasthan [attr6] => best Price Garantie [attr7] => Ratenzahlung [attr9] => false ) ) [1] => Array ( [isMain] => [number] => 411242 [prices] => Array ( [0] => Array ( [customerGroupKey] => EK [price] => 29.99 ) ) [inStock] => 0 [active] => 1 [unitId] => 9 [ean] => 745889656046 [configuratorOptions] => Array ( [0] => Array ( [group] => Größe [option] => M ) [1] => Array ( [group] => Farbe [option] => schwarz ) ) [attribute] => Array ( [attr18] => 86% Nylon / 14% Elasthan [attr6] => best Price Garantie [attr7] => Ratenzahlung [attr9] => false ) ) [2] => Array ( [isMain] => [number] => 411241 [prices] => Array ( [0] => Array ( [customerGroupKey] => EK [price] => 29.99 ) ) [inStock] => 0 [active] => 1 [unitId] => 9 [ean] => 745889656022 [configuratorOptions] => Array ( [0] => Array ( [group] => Größe [option] => S ) [1] => Array ( [group] => Farbe [option] => schwarz ) ) [attribute] => Array ( [attr18] => 86% Nylon / 14% Elasthan [attr6] => best Price Garantie [attr7] => Ratenzahlung [attr9] => false ) ) [3] => Array ( [isMain] => [number] => 411244 [prices] => Array ( [0] => Array ( [customerGroupKey] => EK [price] => 29.99 ) ) [inStock] => 0 [active] => 1 [unitId] => 9 [ean] => 745889656084 [configuratorOptions] => Array ( [0] => Array ( [group] => Größe [option] => XL ) [1] => Array ( [group] => Farbe [option] => schwarz ) ) [attribute] => Array ( [attr18] => 86% Nylon / 14% Elasthan [attr6] => best Price Garantie [attr7] => Ratenzahlung [attr9] => false ) ) [4] => Array ( [isMain] => [number] => 411245 [prices] => Array ( [0] => Array ( [customerGroupKey] => EK [price] => 29.99 ) ) [inStock] => 0 [active] => 1 [unitId] => 9 [ean] => 745889656107 [configuratorOptions] => Array ( [0] => Array ( [group] => Größe [option] => XXL ) [1] => Array ( [group] => Farbe [option] => schwarz ) ) [attribute] => Array ( [attr18] => 86% Nylon / 14% Elasthan [attr6] => best Price Garantie [attr7] => Ratenzahlung [attr9] => false ) ) ) )[/code] Dieses Artikel erzeugt dann folgende Zuordnung: Backend Ansicht: Datenbank Eintrag in s_article_img_mapping_rules Dann scheitert auch oben genannte zweite PUT Aufruf mit folgeundem FEhler: [Semantical Error] line 0, col 176 near 'option1 WITH': Error: 'option1' is already defined. Ich kann keinen Fehler in meinem Artikel Import finden, zumal ich ein Skript habe, das für alle Artikel aus einer Excel Tabelle importiert und bei mindestens der Hälfte der Artikel alles reibungslos abläuft. Sieht einer von euch eventuell nen Fehler, der den Fehlimport verursacht ? Gruß Edin

Hi, sorry aber ich muss euch leider hiermit weiter nervern, denn ich komme hier nicht weiter. Ich schreibe noch mal zusammengefasst meine Beobachtungen auf: über das Import per API ergibt sich ein Problem bei der Zuordnung zwischen dem Bild und der Configurator Option. dies niederschlägt sich in der Tabelle ‘s_article_img_mapping_rules’. Dort werden beim Import eines ConfiguratorSets mit mehreren Optionen dann nur eine Option für alle Einträge gemappt: 1) es wird ein Set für den Artikel angelegt (s_article_configurator_sets): 2) es wird eine Gruppe für den Set angelegt (s_article_configurator_groups): Name filtere ich per htmlentities, da ich dachte, der Fehler könnte durch irgendwelche Sonderzeichen kommen 3) die Set - Group Zuordnung ist soweit richtig (s_article_configurator_set_group_relations): 4) die Optionen der Gruppe wurden ebenfalls angelegt und der Gruppe zugeordnet, drei verschiedene Größen (s_article_configurator_options): 5) die Optionen werden auch dem passenden Set zugeordnet: 6) das Bild das zu den Optionen gemappt werden soll, wird über mediaId zugeordnet (s_articles_img): 7) hier sind die drei entsprechenden Varianten (s_articles_details), die articleID entspricht der articleID aus ders_articles_img Tabelle: 8) für die drei Varianten werden drei Mappings zur passenden image_id erstellt (s_article_img_mappings): 9) [color=red]FEHLER[/color]: in der Tabelle s_article_img_mapping_rules wird in der Spalte option_id anstelle der drei verschiedenen Optionen immer die gleiche Option gewählt, und zwar die erste importierte: print_r vom API Importierten Artikel ist: Array ( [name] =\> Bontrager Unterhose Sport Cycleliner [metaTitle] =\> Bontrager Unterhose Sport Cycleliner kaufen [active] =\> 1 [supplier] =\> Bontrager [categories] =\> Array ( [0] =\> Array ( [id] =\> 1634 ) ) [mainDetail] =\> Array ( [number] =\> 7610 [unitId] =\> 9 [inStock] =\> 0 [prices] =\> Array ( [0] =\> Array ( [customerGroupKey] =\> EK [price] =\> 29.99 ) ) ) [taxId] =\> 1 [filterGroupId] =\> 1 [configuratorSet] =\> Array ( [name] =\> Bontrager Unterhose Sport Cycleliner - Set [type] =\> 1 [groups] =\> Array ( [0] =\> Array ( [name] =\> Größe [options] =\> Array ( [0] =\> Array ( [name] =\> L ) [1] =\> Array ( [name] =\> M ) [2] =\> Array ( [name] =\> S ) ) ) ) ) [images] =\> Array ( [0] =\> Array ( [mediaId] =\> 12555 [options] =\> Array ( [0] =\> Array ( [0] =\> Array ( [name] =\> L ) ) [1] =\> Array ( [0] =\> Array ( [name] =\> M ) ) [2] =\> Array ( [0] =\> Array ( [name] =\> S ) ) ) ) ) [variants] =\> Array ( [0] =\> Array ( [isMain] =\> 1 [number] =\> 411243 [prices] =\> Array ( [0] =\> Array ( [customerGroupKey] =\> EK [price] =\> 29.99 ) ) [inStock] =\> 0 [active] =\> 1 [configuratorOptions] =\> Array ( [0] =\> Array ( [group] =\> Größe [option] =\> L ) ) ) [1] =\> Array ( [isMain] =\> [number] =\> 411242 [prices] =\> Array ( [0] =\> Array ( [customerGroupKey] =\> EK [price] =\> 29.99 ) ) [inStock] =\> 0 [active] =\> 1 [configuratorOptions] =\> Array ( [0] =\> Array ( [group] =\> Größe [option] =\> M ) ) ) [2] =\> Array ( [isMain] =\> [number] =\> 411241 [prices] =\> Array ( [0] =\> Array ( [customerGroupKey] =\> EK [price] =\> 29.99 ) ) [inStock] =\> 0 [active] =\> 1 [configuratorOptions] =\> Array ( [0] =\> Array ( [group] =\> Größe [option] =\> S ) ) ) ) ) Dies passiert z.B. bei ersten drei Artikeln, beim vierten klappt das aufeinmal (s_article_img_mapping_rules, die letzen 5 Einträge): print_r von diesem Artikel ist: Array ( [name] =\> Bontrager Unterhemd B2 Langarm [metaTitle] =\> Bontrager Unterhemd B2 Langarm kaufen [active] =\> 1 [supplier] =\> Bontrager [categories] =\> Array ( [0] =\> Array ( [id] =\> 1636 ) ) [mainDetail] =\> Array ( [number] =\> 9242 [unitId] =\> 9 [inStock] =\> 0 [prices] =\> Array ( [0] =\> Array ( [customerGroupKey] =\> EK [price] =\> 39.99 ) ) ) [taxId] =\> 1 [filterGroupId] =\> 1 [configuratorSet] =\> Array ( [name] =\> Bontrager Unterhemd B2 Langarm - Set [type] =\> 1 [groups] =\> Array ( [0] =\> Array ( [name] =\> Größe [options] =\> Array ( [0] =\> Array ( [name] =\> L ) [1] =\> Array ( [name] =\> M ) [2] =\> Array ( [name] =\> S ) [3] =\> Array ( [name] =\> XL ) [4] =\> Array ( [name] =\> XXL ) ) ) ) ) [images] =\> Array ( [0] =\> Array ( [mediaId] =\> 12555 [options] =\> Array ( [0] =\> Array ( [0] =\> Array ( [name] =\> L ) ) [1] =\> Array ( [0] =\> Array ( [name] =\> M ) ) [2] =\> Array ( [0] =\> Array ( [name] =\> S ) ) [3] =\> Array ( [0] =\> Array ( [name] =\> XL ) ) [4] =\> Array ( [0] =\> Array ( [name] =\> XXL ) ) ) ) ) [variants] =\> Array ( [0] =\> Array ( [isMain] =\> 1 [number] =\> 423681 [prices] =\> Array ( [0] =\> Array ( [customerGroupKey] =\> EK [price] =\> 39.99 ) ) [inStock] =\> 0 [active] =\> 1 [configuratorOptions] =\> Array ( [0] =\> Array ( [group] =\> Größe [option] =\> L ) ) ) [1] =\> Array ( [isMain] =\> [number] =\> 423680 [prices] =\> Array ( [0] =\> Array ( [customerGroupKey] =\> EK [price] =\> 39.99 ) ) [inStock] =\> 0 [active] =\> 1 [configuratorOptions] =\> Array ( [0] =\> Array ( [group] =\> Größe [option] =\> M ) ) ) [2] =\> Array ( [isMain] =\> [number] =\> 423679 [prices] =\> Array ( [0] =\> Array ( [customerGroupKey] =\> EK [price] =\> 39.99 ) ) [inStock] =\> 0 [active] =\> 1 [configuratorOptions] =\> Array ( [0] =\> Array ( [group] =\> Größe [option] =\> S ) ) ) [3] =\> Array ( [isMain] =\> [number] =\> 423682 [prices] =\> Array ( [0] =\> Array ( [customerGroupKey] =\> EK [price] =\> 39.99 ) ) [inStock] =\> 0 [active] =\> 1 [configuratorOptions] =\> Array ( [0] =\> Array ( [group] =\> Größe [option] =\> XL ) ) ) [4] =\> Array ( [isMain] =\> [number] =\> 423683 [prices] =\> Array ( [0] =\> Array ( [customerGroupKey] =\> EK [price] =\> 39.99 ) ) [inStock] =\> 0 [active] =\> 1 [configuratorOptions] =\> Array ( [0] =\> Array ( [group] =\> Größe [option] =\> XXL ) ) ) ) ) Von Struktur her unterscheiden sie sich nicht. Um zu testen ob es an einzelnen Artikeln liegt, habe ich die Import Reihenfolge umgestellt. Den vierten Artikel habe ich auf der ersten Stelle, der rest verschiebt sich um eine Stelle nach hinten. Dann funktioniert jedoch der erste nicht, der zweite ja, der dritte nicht, der vierte wiederum schon. D.h. es liegt nicht an Artikeln. Ich habe jedoch die Vermutung, dass es davon abhängt, ob eine beistmmte Option einer Gruppe zum Zeitpunkt des Imports eines Artikels mit dieser Option bereits existiert oder nicht. Wird also die Option zusammen mit dem Artikel gerade angelegt, dann läuft was schief mit der s_article_img_mapping_rules Tabelle. Wurde die Option jedoch zuvor angelegt, dann läuft das die durch.

Hallo edin,

ich glaube, daß ich - obwohl ja nun geraume Zeit verstrichen ist - dasselbe Problem habe. Nach dem Import über die Rest-API verlieren die Bilder ihre Zuordnungen. Ich habe Artikel mit zwei bis drei Farben und verschiedenen Größen (Schuhe eben).
Nach dem Import bleiben im Backend die Farbzuordnungen erhalten. Im Frontend ist alles weg. Klicke ich mich im Backend erneut händisch durch (was eben just nicht der Sinn einer Schnittstelle ist), tut es wieder. Das Problem sind fehlende Einträge in der s_articles_img. Es gibt zum Thema hier einen weiteren thread: https://forum.shopware.com/discussion/comment/200302/

Lieber Gruß: Martin