ShopwareImport mit Freemarker Fehler?

Ich nutze den Step ShopwareImport und habe folgendes Skript bei der mappingdefinition:

<#-- IDs trimmen und führendes | entfernen -->
<#assign trimmedIds = eigenschaften?trim>
<#if trimmedIds?startsWith("|")>
    <#assign trimmedIds = trimmedIds?substring(1)>
</#if>

<#-- Überprüfen, ob IDs vorhanden sind -->
<#assign idArray = trimmedIds?split("|")>  <#-- Escape für | hinzufügen -->

<#-- IDs in das gewünschte Format bringen -->
<#if idArray?size gt 0 && idArray[0]?length gt 0>
    <#-- Hochkommas um die IDs setzen, aber sicherstellen, dass keine doppelten Anführungszeichen vorhanden sind -->
    <#assign jsonArray = idArray?join('","')>  <#-- Hochkommas zwischen den IDs -->
    <#assign result = "[\"" + jsonArray + "\"]">  <#-- Hochkommas um das gesamte Array -->
<#else>
    <#assign result = "">  <#-- leeres Array, wenn keine IDs vorhanden sind -->
</#if>

<#-- Entfernen von inneren doppelten Anführungszeichen -->
<#assign result = result?replace("\"\"", "\"")>  <#-- Ersetze "" durch " -->

<#-- Ausgabe -->
${result}

Wenn ich dann links oben auf den blauen Button „Vorschau“ klicke, erhalte ich auch das gewünschte Ergebnis.

["cf013c03078f4099b7449514ad4813a8"]

Wenn ich das nun abspeichere und dann rechts oben auf „Step-Vorschau“ klicke, erhalte ich eine CSV-Datei. Wenn ich bei der CSV-Datei auf „Vorschau“ klicke, werden die Hochkommas dupliziert.

[""cf013c03078f4099b7449514ad4813a8""]

Wenn ich neben dem „Vorschau“ auf „Herunterladen“ klicke, erhalte ich eine CSV. Dort ist das Feld leer.

Ich kann mir keinen Reim draus machen und habe verschiedene Möglichkeiten ausprobiert. Nichts hilft. Mit einfache Hochkommas ' kann wiederrum Shopware nicht umgehen, wenn ich die propertyIds übergeben möchte.

Was ist an meinem Code falsch oder liegt bei Synesty ein Fehler vor?

Hallo @Lemm,

ich denke dein Skript ist korrekt und die erstellte CSV Datei auch. In der CSV werden in Werten enthaltene " mit einem zusätzlichen " escaped. D.h. bei der Erstellung der Datei werden aus deinen einfachen die doppelten Anführungszeichen.

Ein Beispiel-Export aus unserem Testshop:

Warum willst du ein Array in der CSV ausgeben / an den Import übergeben? Soweit ich weiß müssen mehrere IDs Pipe (|) getrennt in der CSV angeben werden.

Viele Grüße
Torsten

@synesty-Torsten Ich hatte aus meinen Shop einen Produktexport gemacht. Dort wurden diese in der Array-Schreibweise eingetragen. Mich hatte das auch gewundert, weil ich gelesen hatte, dass das mit einer Pipe realisiert werden sollte. Da die Pipe-Schreibweise bei mir nicht funktionierte - sprich, die Eigenschaften wurden trotz korrekter ID nicht dem Produkt nach Import zugewiesen - war ich dann der Annahme, dass es mit dem Array sein muss.

Hallo @Lemm,

ich kenne bisher nur die | getrennte Schreibweise in den Exporten und Importen. In der SW 6 Import/Export Dokumentation habe ich bisher auch noch nichts zu einer Array Schreibweise gefunden. Welche Shopware 6 Version verwendest du ?

VG Torsten

Version 6.5.4.1

Ich teste das heute nochmal.

1 Like