Customfield im Verkaufskanal für csv export

Hallo,

Shopware 6.6.9.0

ich habe in meinem Verkaufskanal von einem Marktplatz (csv Export) einen Schalter (customField) eingebaut. Dieser soll in diesem Marktplatz im Template (csv) den Bestand auf 0 setzten.

"{% if context.salesChannel.customFields.custom_marktplatz_bestand0 == '1' %}0{%else%}{{product.availableStock}}{%endif%}";{# stock_amount #}

leider funktioniert der Schalter nicht und bekomme immer „Failed rendering string template using Twig“

jemand ne idee?

wie heißt denn das Feld im Spaltenkopf?

so muss es lauten:

context.salesChannel.translated.customFields.marktplatz_bestand0

mit translated geht es auch nicht

"{% if context.salesChannel.translated.customFields.custom_marktplatz_bestand0 == '1' %}0{%else%}{{product.availableStock}}{%endif%}";{# stock_amount #}

Failed rendering string template using Twig: Key „custom_marktplatz_bestand0“ does not exist as the sequence/mapping is empty in

Ist der Wert auch gesetzt? Bei mir kam das auch erst, als ich dann einen Wert eingetragen hatte, ging es.

Nachtrag: eben nochmal probiert, wenn ich das Feld leere, geht es nicht, kommt die gleche Fehlermeldung wie bei Dir

es ist ja ein Aktiv-Schalter, in der DB steht auch 1 drin

Ahh okay, ich hab es mit einem Textfeld probiert, muss ich mal mit einem Schalter probieren.

So, hab es mit einem Aktiv-Schalter probiert, geht. Hab allerdings im if nur auf den Wert geprüft, ohne ==‚1‘

also so?

"{% if context.salesChannel.translated.customFields.custom_marktplatz_bestand0 %}0{%else%}{{product.availableStock}}{%endif%}";{# stock_amount #}

Dann heißt der Spaltenkopf wohl translations.DEFAULT.customFields.marktplatz_bestand0 - bitte testen

irgendwie will das leider so nicht…

"{% if translations.DEFAULT.customFields.custom_marktplatz_bestand0 == '1' %}0{%else%}{{product.availableStock}}{%endif%}";{# stock_amount #}
"{% if context.salesChannel.translations.DEFAULT.customFields.custom_marktplatz_bestand0 == '1' %}0{%else%}{{product.availableStock}}{%endif%}";{# stock_amount #}
"{% if context.salesChannel.translated.customFields.custom_marktplatz_bestand0 == '1' %}0{%else%}{{product.availableStock}}{%endif%}";{# stock_amount #}
"{% if context.salesChannel.customFields.custom_marktplatz_bestand0 == '1' %}0{%else%}{{product.availableStock}}{%endif%}";{# stock_amount #}

Bedeutung der Fehlermeldung: context.salesChannel.customFields = null und context.salesChannel.translated.customFields = []

Diese beiden Ausgaben sind sehr wichtig und sagen uns genau, wo das Problem liegt:

  • context.salesChannel.customFields = null: Das bedeutet, dass die nicht-übersetzten Zusatzfelder für den Verkaufskanal überhaupt nicht geladen wurden.
  • context.salesChannel.translated.customFields = [] (leeres Array): Das bedeutet, dass selbst wenn es übersetzte Zusatzfelder gäbe, die dazugehörige Liste leer ist.

Zusammengenommen heißt das: Das Twig-Template für deinen CSV-Export findet keine Zusatzfelder beim Verkaufskanal, egal ob übersetzt oder nicht. Der Datenbereich für Zusatzfelder im Verkaufskanal-Kontext ist einfach leer.

Es kann auch sein, dass die Zahl am Ende des Schlüssels ein Problem darstellt. Probier mal customFields[‚custom_marktplatz_bestand0‘] als Alternative. Und am besten mal die custom fields testweise ausgeben, ob die Daten überhaupt vorhanden sind, wie du sie erwartest.

Viele Grüße

leider nicht… hab noch eins erstellt

"{% if context.salesChannel.customFields.custom_bestand_nix %}0{%else%}{{product.availableStock}}{%endif%}";{# stock_amount #}
"{% if context.salesChannel.translated.customFields.custom_bestand_nix %}0{%else%}{{product.availableStock}}{%endif%}";{# stock_amount #}

Gemini sagt mir, dass dieses CustomField nicht im Feed geladen wird.
aus Performance Gründen sind nicht alle „Verwenden für“ Optionen verfügbar.

Bitte hört auf dem Blödsinn von KI ungefiltert zu glauben. Wenn im Kontext der sales channel vorhanden ist, dann sind auch immer die custom fields dabei - die gehören zwingend zur entity.

Noch einmal der Hinweis: prüfe einmal, ob die Daten überhaupt wie vermutet vorliegen, indem du sie ausgibst.

Viele Grüße

1 „Gefällt mir“

meinste das hier?

context.salesChannel.customFields = null
context.salesChannel.translated.customFields = []