Import/Export - Profile - Konvertierungen bearbeiten - Syntax

Hallo,

ich habe eine Frage zu einem Test-Artikel-Import.

Zunächst habe ich mir händisch die folgenden drei Kategorien im Shopware Backend angelegt:

  • Test1
  • Test2
  • Test3

Dann habe ich versucht eine CSV-Datei mit drei Testartikeln zu importieren. In der Spalte „KATEGORIE“ der CSV-Datei steht in Textform der Name der Artikelkategorie z.B. „Test1“, „Test2“ oder „Test3“.

Der Import funktioniert natürlich nicht, weil das System in der Spalte KATEGORIE der CSV-Datei die Kategorie ID erwartet und nicht wie bei mir den Kategorie Namen.

Ich habe deshalb folgendes gemacht:

Zunächst habe ich mir die IDs der drei angelegten Kategorien notiert (10,11 und 12). Dann bin ich her gegangen und habe bei Import/Export unter dem passenden benutzerdefinierten Profil auf „Konvertierungen bearbeiten“ geklickt. Für das Feld „categoryId“ habe ich bei „Import-Umwadlung“ folgendes eingetragen:

{if $KATEGORIE == 'Test1'}10
{elseif $KATEGORIE == 'Test2'}11
{elseif $KATEGORIE == 'Test3'}12
{/if}

Nach dem Speichern habe ich den Import erneut probiert. Leider klappt es noch immer nicht mit dem Import. Ich erhalte folgende Fehlermeldung:

Fehler beim Import. Kategorie mit ID Test1 konnte nicht gefunden werden.

Zwei Fragen dazu:

  1. Ich verstehe nicht was hier noch falsch sein soll? Durch den Code oben habe ich Test1 doch durch die ID der Kategorie (10) ersetzt. Vielleicht ein Syntax Fehler im Code?

  2. Was ist das überhaupt für eine Programmiersprache die da verwendet wird? Smarty?

Ja, dort wird Smarty verwendet.

Ich glaube als Name der Spalte wird der des Datenbank Feldes erwartet. Also quasi der Name des gemappten Feldes und nicht der, den du vergeben hast.

Also $Kategorie ist glaube falsch.

1 „Gefällt mir“

Ich glaube als Name der Spalte wird der des Datenbank Feldes erwartet. Also quasi der Name des gemappten Feldes und nicht der, den du vergeben hast.

Ich bin mir nicht sicher, ob ich Dich richtig verstanden habe. Es ist demnach folgendes zu tun:

In der CSV-Datei den Namen der Spalte von KATEGORIE auf categoryId umwandeln.

Im Feld „Import-Umwandlung“ im Shopware Backend im Code KATEGORIE durch categoryId ersetzen. Der Code sieht dann wie folgt aus:

{if $categoryId == 'Test1'}10
{elseif $categoryId == 'Test2'}11
{elseif $categoryId == 'Test3'}12
{/if}

Ich bin her gegangen und habe alles wie oben angepasst und dann erneut importiert. Der Import klappt nun ohne Fehlermeldung. In den Kategorien „Test1“, „Test2“ und „Test3“ finde ich nach dem Import allerdings trotzdem keine Produkte.

Was läuft hier noch falsch?

Funktioniert bei mir einwandfrei. In der Importdatei steht überall im Feld “categoryId” der Wert “Test”, nach dem Import sind alle Artikel der ID 7 zugewiesen.
Vielleicht passt deine Import-Datei auch nicht? Alle Felder mit Semikolon getrennt?

Ich habe den Fehler gefunden. Es klappt jetzt.

Dadurch, dass ich die Spalte “KATEGORIE” in der CSV durch “categoryId” ersetzt habe musste ich zusätzlich neben der Code Anpassung im Feld “Import-Umwandlung” natürlich auch noch im benutzerdefinierten Profil das Mapping bezogen auf die Kategorie von “KATEGORIE” auf “categoryId” ändern. Nach dieser Änderung klappt der Import. Die Artikel erscheinen in den Kategorien “Test1”, “Test2” und “Test3”.

In der CSV-Datei des Lieferanten heißt die Kateogie Spalte allerdings “KATEGORIE” und nicht wie benötigt “categoryId”. Die Artikel sollen täglich per Cronjob von einer URL (auf welcher der Lieferant mir die CSV-Datei zur Verfügung stellt) importiert werden. Auf der CSV-Datei, die auf der URL liegt, kann ich natürlich nicht “KATEGORIE” durch “categoryId” ersetzten. Hast du eine Idee wie man das automatisiert lösen kann?

Du hast da etwas falsch verstanden.

Das Feld kann im Profil heißen wie es will - das {if} muss nur mit categoryId gemacht werden. Also im Profil und auch der Datei kann die Spalte heißén wie sie will - im Mapping dann so wie in meinem Screenshot.

Hallo,

jetzt klappt es, danke.

Hi zusammen,

hoff ich darf mich gleich hier dazu hängen. :slight_smile:

Ich will Artikeln, die in einer bestimmten Kategorie (zB ID: 2258) sind, entweder nicht importieren oder auf inaktiv stellen.
Auch wenn Artikeln mehrere Kategorien haben (CSV Spalte: 563|2258|1533), dürfen diese nicht sichtbar sein. Dieser Import muss alle 2-3 Stunden erfolgen. Deshalb ist es manuell nicht durchführbar.

Bei Konvertierung “active” hab ich unter anderem folgendes, ohne Erfolg, probiert:

{if $categories:"2258"}0{else}1{/if}
{if $categories|strstr:"2258"}0{else}1{/if}
{if $categoryId|strstr:"2258"}0{else}1{/if}