Data

Modifikatoren

Lernen Sie, wie man Modifikatoren verwendet.

Überblick #

Modifiers ist ein leistungsfähiges Tool, mit dem Sie die Produktdaten nach der Synchronisierung ändern können, ohne dass ein Entwickler die Änderungen im Datenfeed vornehmen muss. Da es sich derzeit um ein experimentelles Tool handelt, können es vorerst nur die internen Sachbearbeiter nutzen. Wenden Sie sich also bitte an den Support, wenn Sie diese Funktion benötigen.

Es unterstützt die folgenden Befehle.

BefehlWirkung
setFügt ein Attribut zu allen Produkten hinzu
deleteEntfernt ein Attribut bei allen Produkten
updateAktualisiert ein Attribut für alle Produkte
typeÄndert den Typ eines Attributs für alle Produkte
splitZerlegt eine Zeichenkette durch ein Trennzeichen in eine Liste von Zeichenketten.
expressionWertet einen Ausdruck in einem Attribut aus
formatFormatiert eine Zeichenkette in einem Attribut
lowerFormatiert eine Zeichenkette in alle Kleinbuchstaben
upperFormatiert eine Zeichenkette in alle Großbuchstaben
capitalizeFormatiert eine Zeichenkette in Titelform, wobei das erste Zeichen großgeschrieben wird

Alle Befehle unterstützen auch die if-Klausel. Die if-Klausel kann zu jeder beliebigen Anweisung hinzugefügt werden, und der Befehl wird nur dann für das Attribut ausgeführt, wenn die Anweisung als wahr ausgewertet wird.

Befehle #

Hier ist jeder der Befehle mit einem Beispiel, mit Variablen, wie benötigt. Alle Befehle benötigen einen Typ, der angibt, welcher Befehl ausgeführt werden soll, und ein Attribut, das angibt, mit welchem Attribut der Befehl ausgeführt werden soll.

Setzen #

Nimmt einen neuen_Wert an, der angibt, auf welchen Wert das Attribut gesetzt werden soll. Er kann sowohl als neues Attribut als auch als Ersatz für ein bestehendes Attribut verwendet werden.

{
  "type": "set",
  "attribute": ATTRIBUTE,
  "new_value": NEU_WERT
}

Beispiel In diesem Beispiel wird das Attribut “angezeigt” überschrieben, wenn das Produkt nicht mehr vorrätig ist.

{
    "type": "set",
    "attribute": "shown",
    "new_value": "false",
    "if": "stock < 1"
}

Vor #

{
  "id": 153,
  "name": "Lineman Chute",
  "stock" : 0,
  "shown" : true,
  "price": 200.00,
}

Nach #

{
  "id": 153,
  "name": "Lineman Chute",
  "stock" : 0,
  "shown" : false,
  "price": 200.00,
}

Löschen #

Löscht das angegebene Attribut aus allen Produkten.

{
  "type":"delete",
  "attribute": ATTRIBUTE
}

Beispiel Hier werde ich das Attribut “angezeigt” für alle Produkte entfernen.

{
  "type":"delete",
  "attribute": "shown"
}

Vor #

{
  "id": 153,
  "name": "Lineman Chute",
  "shown": true,
  "price": 200.00,
}

Nach #

{
  "id": 153,
  "name": "Lineman Chute",
  "price": 200.00,
}

Update #

Wenn Sie nicht technisch versiert sind und dies lesen. Halten Sie sich fest, denn wir verwenden regex mit der python Bibliothek.

Update nimmt das Attribut regexp, das ein Regex-Ausdruck ist, der auf einige Teile des Attributs passt, und ersetzt jede übereinstimmende Gruppe durch den Inhalt von replace_by. Hier finden Sie ein hilfreiches Tool für die Erstellung Ihrer Regex.

Ein Beispiel für eine Regex könnte [/]+ mit einem replace_by von ’/’ sein, dies würde alle Stellen im Attribut nehmen, die mehrere / in einer Reihe haben und sie mit einem einzelnen / ersetzen. So würde https://test//tests zu https:/test/tests.

{
  "type":"update",
  "attribute": "ATTRIBUTE",
  "regexp": "MATCH_REGEX",
  "replace_by": "STRING",
}

Beispiel Hier werde ich einen Teil der URL entfernen, mit einem Regex, der den letzten Teil der URL bearbeitet, wobei ich darauf achte, dass das / entschlüsselt wird.

{
  "type":"update",
  "attribute": "url",
  "regexp": "\/\/__example",
  "replace_by": ""
}

Vor #

{
  "id": 153,
  "name": "Lineman Chute",
  "url": "https://example.domain/product/153//__example",
  "price": 200.00
}

Nach #

{
  "id": 153,
  "name": "Lineman Chute",
  "url": "https://example.domain/product/153",
  "price": 200.00
}

Typ #

Erlaubt die Änderung von Typen in einem Attribut. Wenn es sich bei den Daten also um eine Zahl handelt und Sie eine Zeichenkette benötigen, können Sie diese hier verwenden, um sie zu typisieren.

{
  "type":"type",
  "attribute": "ATTRIBUTE",
  "new_type": any of ["string", "int", "float", "boolean"]
}

Beispiel Hier wird der Typ des Preises von einem String in einen Float geändert.

{
  "type":"type",
  "attribute": "price",
  "new_type": "float"
}

Vor #

{
  "id": 153,
  "name": "Lineman Chute",
  "price": "200",
}

Nach #

{
  "id": 153,
  "name": "Lineman Chute",
  "price": 200.00,
}

Aufteilen #

Ermöglicht die Aufteilung einer Zeichenkette durch ein Trennzeichen in eine Liste von Zeichenketten. Standardmäßig wird durch ein Komma getrennt, wenn kein Trennzeichen angegeben wird.

{
  "type":"split",
  "attribute": "ATTRIBUTE",
  "separator": "STRING"
}

Beispiel Hier wird ein Attribut mit Kategorien aufgeteilt.

{
  "type":"split",
  "attribute": "string_categories"
}

Vor #

{
  "id": 153,
  "name": "Lineman Chute",
  "string_categories": "lineman, chute"
}

Nach #

{
  "id": 153,
  "name": "Lineman Chute",
  "string_categories":["lineman","chute"]
}

Format #

Ermöglicht die Erstellung einer formatierten Zeichenfolge.

Dies könnte ein neuer Wert sein, der als {price} {currency} bezeichnet wird.

Wenn die benötigten Daten kein Attribut des Produkts sind, können Sie das zusätzliche Attribut auch dem Befehl hinzufügen.

{
  "type":"format",
  "attribute": ATTRIBUTE,
  "new_value": VALUE_TO_SET,
  ... : ... #(can include more attributes that are needed for formating)
}

Beispiel Hier füge ich eine Währung am Ende des Preises hinzu. Zuerst muss ich den Typ in eine Zeichenkette ändern, dann die formatierte Syntax einfügen und dann die Formatierung vornehmen. Der Aktualisierungsbefehl fügt den Wert in replace_by an das Ende des Preises an.

[
{
  "type":"format",
  "attribute": "price_with_currency",
  "new_value": "{price} {currency}"
}
]

Vor #

{
  "id": 153,
  "name": "Lineman Chute",
  "currency": "DKK",
  "price": 200.00,
}

Nach #

{
  "id": 153,
  "name": "Lineman Chute",
  "currency": "DKK",
  "price": 200.00,
  "price_with_currency": "200.00 DKK"
}

Ausdruck #

Wertet einen Ausdruck aus, der im angegebenen Attribut enthalten ist. Wenn beispielsweise die Zeichenkette “Preis * 0,8” in einem Attribut enthalten ist und wir Expression darauf anwenden, ist das Ergebnis 80 % dessen, was im Attribut Preis enthalten ist.

{
  "type":"expression",
  "new_value": NEW_VALUE,
  "attribute": ATTRIBUTE
}

Beispiel Wertet einen Ausdruck aus, der im angegebenen Attribut enthalten ist. Wenn zum Beispiel die Zeichenkette “Preis * 0,8” in einem Attribut enthalten ist und wir den Ausdruck darauf anwenden, ist das Ergebnis 80 % dessen, was im Attribut “Preis” steht.

[
    {
        "type": "expression",
        "attribute": "price_alt",
        "new_value": "price * 0.65"
    }
]

Vor #

{
  "id": 153,
  "name": "Lineman Chute",
  "price": 200.00,
}

Nach #

{
  "id": 153,
  "name": "Lineman Chute",
  "price": 200.00,
  "price_alt": "130.0",
}

Wenn #

Wenn if zu einem der oben genannten Befehle mit einer Anweisung hinzugefügt wird, wird der Befehl nur bei Attributen ausgeführt, bei denen die angegebene Anweisung als wahr ausgewertet wird.

Verfügbare Operatoren sind:

OperatorBedeutung
=Entspricht allen Produkten, bei denen das Attribut gleich dem Wert ist.
!=Entspricht allen Produkten, bei denen das Attribut nicht gleich dem Wert ist.
&gt;Finde alle Produkte, bei denen das Attribut größer als der Wert ist.
&gt;=Finde alle Produkte, bei denen das Attribut größer als oder gleich dem Wert ist.
&lt;Entspricht allen Produkten, bei denen das Attribut kleiner als der Wert ist.
`inEntspricht einer Teilzeichenkette in einer Zeichenkette oder einem Element in einer Liste

Beim Vergleich eines Attributs mit einem bestimmten Wert lautet die Syntax wie folgt:

{
  "type":"delete"
  "attribute": ATTRIBUTE,
  "if":"ATTRIBUTE OPERATOR VALUE"
}

Bei der Auswertung einer Teilzeichenkette in einer Zeichenkette oder eines Elements in einer Liste lautet die Syntax:

{
  "type":"delete"
  "attribute": ATTRIBUTE,
  "if":"VALUE in ATTRIBUTE"
}

Beispiel Vergleich mit einem bestimmten Wert

{
    "type": "set",
    "attribute": "shown",
    "new_value": "false",
    "if": "stock < 1"
}

Beispiel Prüfen einer Teilzeichenkette

{
    "type": "set",
    "attribute": "shown",
    "new_value": "false",
    "if": "'withdrawn' in name"
}

if-Anweisungen können auch mit ‘und’/‘oder’ in Anweisungen gruppiert werden:

{
    "type": "set",
    "attribute": "shown",
    "new_value": "false",
    "if": "(stock < 1 and 'withdrawn' in name) or brand = 'Nike'"
}

Kombinationen #

Hier ist ein Beispiel für eine Verkettung mehrerer Änderungen. Hier erstelle ich ein neues Attribut namens price_alt für ein bestimmtes Produkt. Es nimmt sowohl den Preis als auch die Währung und erstellt ein neues Feld mit ihnen.

[{
  "type":"set",
  "attribute":"price_alt",
  "new_value":"{price}{currency}",
  "if":"id == 153"
},{
  "type":"update",
  "attribute":"price_alt",
  "regexp":"o",
  "replace_by":"i",
  "if":"id == 153"
},{
  "type":"format",
  "attribute":"price_alt",
  "currency":"DKK",
  "if":"id == 153"
}]

Dadurch würde ein neues Feld mit der Bezeichnung price_alt entstehen, das den Preis und die DKK am Ende enthält.

Vor #

{
  "id": 153,
  "name": "Lineman Chute",
  "price": 200.00,
}

Nach #

{
  "id": 153,
  "name": "Lineman Chute",
  "price": 200.00,
  "price_alt": "200.00DKK"
}