Doku PlentySetVariationCategories?

Hallo Synesty,

zum Step PlentySetVariationCategories konnte ich noch keine Dokumentation finden.

Ich möchte mehrere Kategorien hinzufügen bzw entfernen: Wie gebe ich dem categoriesSpreadsheet mehrere Werte für CategoryIds und RemoveCategoryIds mit? Kommagetrennt scheint nicht zu gehen.

Konkret möchte ich im Step Saison_setDiscount meine Varianten immer der Kategorie 196, und je nach discountLevel außerdem der Kategorie 817, 818 oder 819 zuordnen. Wie mach ich das am elegantesten?

Danke, Daniel

Okay, es geht mit Semikolon.


Folgefrage: Ich bekomm ne Warnung wenn ich eine Kategorie entfernen will die nicht verknüpft ist. Gibt es ne best practice wie ich prüfe ob eine KategorieID an der Variante verknüpft ist, bevor ich sie lösche?


Bisher hab ich immer "vorsichtshalber" die beiden Kategorien gelöscht die ich nicht gesetzt hab (von den 4 genannten), über DynImport, per replace()-Kette am CategoryBranches-String. Wie mach ich das nun am geschicktesten?

Meine Lösung bis jetzt: so Strings zusammenbauen:

<#if AllCategoryIDs?split(";")?seq_contains("817")>817;</#if>

und dann per Spalten-Funktion "Script" das letzte Semikolon wieder entfernen:

${value!?remove_ending(";")}

Scheint zu tun ¯\_(ツ)_/¯


Hallo Daniel,


das sieht korrekt aus :) Wir versuchen die Doku für die REST Steps in den nächsten Wochen zu erweitern, Die Steps sind ja inzwischen recht "stabil".


Viele Grüße

Torsten

Hi Torsten,

das oben skizzierte Szenario bläht den Code leider sehr schnell auf, hier für removeCategoryIds:

<#if (discountLevel == 0)>
  <#if AllCategoryIDs?split(",")?seq_contains("817")>817;</#if>
  <#if AllCategoryIDs?split(",")?seq_contains("818")>818;</#if>
  <#if AllCategoryIDs?split(",")?seq_contains("819")>819;</#if>
  <#if AllCategoryIDs?split(",")?seq_contains("196")>196;</#if>
<#elseif (discountLevel == 1)>
  <#if AllCategoryIDs?split(",")?seq_contains("818")>818;</#if>
  <#if AllCategoryIDs?split(",")?seq_contains("819")>819;</#if>
<#elseif (discountLevel == 2)>
  <#if AllCategoryIDs?split(",")?seq_contains("817")>817;</#if>
  <#if AllCategoryIDs?split(",")?seq_contains("819")>819;</#if>
<#elseif (discountLevel == 3)>
  <#if AllCategoryIDs?split(",")?seq_contains("817")>817;</#if>
  <#if AllCategoryIDs?split(",")?seq_contains("818")>818;</#if>
</#if>

Is dann insbesondere ohne Zeilenumbrüche nur schwer zu lesen. Wenn ich die Warnungen ausschalten könnte käme ich mit einem Bruchteil an Zeichen hin ;-)


Hallo Daniel,


ich denke nochmal über die Warnung nach. Generell ist es aber schon sinnvoll zu prüfen ob die Kategorie vorhanden ist. Für jede Kategorie ID wird ein DELETE (schreibender) Call ausgeführt.


Ich weiß nicht ob du noch mehr in der Spalte machst, aber vielleicht kommst du mit einem MappingSet + Script im Wert Feld zu einem etwas kürzeren und erweiterbaren Code:


Quellspalte: discountLevel

Mapping Set:

0=817;818;819;196
1=818;819
2=817;819
3=817;818


Skript im Wert Feld:

<#assign remove_cats><#list value?split(";") as cat><#if AllCategoryIDs?split(",")?seq_contains(cat)>${cat};</#if></#list></#assign>${remove_cats?remove_ending(";")}



Viele Grüße

Torsten

Hi Torsten,

ne ich mach sonst nix in der Spalte, das mit dem MappingSet klingt gut.

Nun muss ich aber zugeben, dass ich mich damit noch nie beschäftigt hab, und es spontan nicht zum laufen bekomme :/

Zuerst mal hatte ich oben einen Fehler, man muss AllCategoryIDs ebenfalls nach Semikolon splitten. Also hab ich deinen Code zu

<#assign remove_cats><#list value?split(";") as cat><#if AllCategoryIDs?split(";")?seq_contains(cat)>${cat};</#if></#list></#assign>${remove_cats?remove_ending(";")}

angepasst. Nun schreibst du, das muss ins Feld "Wert", im Screenshot stehts aber im Feld "Script" unten bei Funktionen. Aber egal welche Variante, es tut sich nix? Das MappingSet an sich expandiert aber ohne Probleme.

Vielleicht ist es aber auch nur zu spät... Wahrscheinlich hab ich was offensichtliches übersehen :) Kannst du mir auf die Sprünge helfen?

Hallo Daniel,


es muss natürlich ins Skript Feld :). Das Splitten nach Komma (AllCategoryIDs) hatte ich nur von deinem Code weiter oben übernommen. Wenn es der originale AllCategoryIDs-Wert aus dem GetVariations Step ist, dann sollte es ein Semikolon sein. Dein Code sieht korrekt aus und sollte funktionieren.


VG

Torsten

Öh, ja: Ich sollte den Artikel dann auch den entsprechenden Kategorien zuordnen :D

Mein Fehler, danke!