Data

Modifier

Erfahren Sie, wie Sie Modifikatoren verwenden.

Übersicht #

Modifiers ist ein leistungsstarkes Tool, das es Ihnen ermöglicht, die Produktdaten nach der Synchronisierung zu ändern, ohne einen Entwickler hinzuziehen zu müssen, um Änderungen im Datenfeed vorzunehmen. Da es sich derzeit um ein experimentelles Tool handelt, kann es vorerst nur vom internen Clerk-Personal verwendet werden. Bitte kontaktieren Sie den Support, wenn Sie diese Funktionalität benötigen.

Es unterstützt die folgenden Befehle.

BefehlWirkung
setFügt allen Produkten ein Attribut hinzu
deleteEntfernt ein Attribut von allen Produkten
updateAktualisiert ein Attribut bei allen Produkten
typeÄndert den Typ eines Attributs bei allen Produkten
splitTeilt einen String nach einem Trennzeichen in eine Liste von Strings.
appendFügt einem bestehenden Listenattribut einen Wert hinzu
expressionBewertet einen Ausdruck in einem Attribut
formatFormatiert einen String in einem Attribut
lowerFormatiert einen String in Kleinbuchstaben
upperFormatiert einen String in Großbuchstaben
capitalizeFormatiert einen String in Titel-Schreibweise mit dem ersten Zeichen in Großbuchstaben

Alle Befehle unterstützen auch die if-Klausel. Die if-Klausel kann zu allem mit einer Aussage hinzugefügt werden, und der Befehl wird nur auf das Attribut angewendet, wenn die Aussage als wahr ausgewertet wird.

Befehle #

Hier sind die einzelnen Befehle mit einem Beispiel, mit Variablen nach Bedarf. Alle Befehle benötigen einen Typ, der angibt, welchen Befehl auszuführen ist, und ein Attribut, das angibt, auf welches Attribut der Befehl angewendet werden soll.

Set #

Nimmt einen new_value, der zeigt, welchen Wert das Attribut erhalten soll, und kann sowohl als neues Attribut als auch zur Ersetzung eines bestehenden Attributs verwendet werden.

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

Beispiel In diesem Beispiel werde ich das Attribut ‘shown’ überschreiben, wenn das Produkt nicht auf Lager ist.

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

Vorher #

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

Danach #

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

Delete #

Löscht das angegebene Attribut von allen Produkten.

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

Beispiel Hier werde ich das Attribut ‘shown’ für alle Produkte entfernen.

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

Vorher #

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

Danach #

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

Update #

Wenn Sie nicht-technisch sind und dies lesen. Schnallen Sie sich an, denn wir verwenden regex mit der python Bibliothek.

Update benötigt das Attribut regexp, das ein Regex-Ausdruck ist, der auf einige Teile des Attributs zutrifft und jede übereinstimmende Gruppe mit dem Inhalt von replace_by ersetzt. Hier ist ein hilfreiches Tool, um Ihr Regex zu erstellen.

Ein Beispiel für Regex könnte [/]+ mit einem replace_by von ’/’ sein, dies würde alle Stellen im Attribut, die mehrere / hintereinander haben, durch ein einzelnes / ersetzen. So würde https://test//tests zu https:/test/tests werden.

{
  "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 übereinstimmt, wobei ich sicherstelle, dass ich das / escapiere.

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

Vorher #

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

Danach #

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

Type #

Erlaubt das Ändern von Typen in einem Attribut. Wenn die Daten also eine Zahl sind und Sie sie in einen String umwandeln müssen, können Sie dies verwenden.

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

Beispiel Hier ändern wir den Typ des Preises von einem String in einen Float.

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

Vorher #

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

Danach #

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

Split #

Erlaubt das Teilen eines Strings nach einem Trennzeichen in eine Liste von Strings. Standardmäßig wird bei Fehlen eines Trennzeichens nach einem Komma geteilt.

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

Beispiel Hier teilen wir ein Attribut mit Kategorien.

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

Vorher #

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

Danach #

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

Append #

Erlaubt das Hinzufügen neuer Werte zu einem bestehenden Listenattribut.

Dies könnte das Hinzufügen zusätzlicher Strings zu einem tags-Attribut oder das Hinzufügen einer neuen Kategorie zu einem categories-Attribut sein.

{
  "type": "append",
  "attribute": LIST_ATTRIBUTE,
  "append_element": VALUE_TO_APPEND,
}

Beispiel Hier werde ich ein neues Tag zum Produkt hinzufügen, wenn es einen Preis unter 100 hat.

{
  "type": "append",
  "attribute": "tags",
  "append_element": "Cheap-Product",
  "if": "price < 100"
}

Vorher #

{
  "name": "Lineman Goalkeeper",
  "price": 99.99,
  "tags": ["boots", "brand-lineman"]
}

Danach #

{
  "name": "Lineman Goalkeeper",
  "price": 99.99,
  "tags": ["boots", "brand-lineman", "Cheap-Product"]
}

Expression #

Bewertet einen Ausdruck, der im angegebenen Attribut enthalten ist. Wenn beispielsweise der String ‘price * 0.8’ in einem Attribut vorhanden ist und wir den Ausdruck darauf anwenden, beträgt das Ergebnis 80% dessen, was im Preisattribut steht.

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

Beispiel Bewertet einen Ausdruck, der im angegebenen Attribut enthalten ist. Wenn beispielsweise der String ‘price * 0.8’ in einem Attribut vorhanden ist und wir den Ausdruck darauf anwenden, beträgt das Ergebnis 80% dessen, was im Preisattribut steht.

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

Vorher #

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

Danach #

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

If #

Wenn if zu einem der oben genannten Befehle mit einer Aussage hinzugefügt wird, wird der Befehl nur auf Attribute angewendet, bei denen die angegebene Aussage 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 ungleich dem Wert ist.
>Entspricht allen Produkten, bei denen das Attribut größer als der Wert ist.
>=Entspricht allen Produkten, bei denen das Attribut größer oder gleich dem Wert ist.
<Entspricht allen Produkten, bei denen das Attribut kleiner als der Wert ist.
inEntspricht einem Teilstring in einem String oder einem Element in einer Liste

Beim Vergleichen eines Attributs mit einem bestimmten Wert ist die Syntax:

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

Beim Bewerten eines Teilstrings in einem String oder eines Elements in einer Liste ist 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 Überprüfung eines Teilstrings

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

if-Aussagen können auch mit ‘and’/‘or’ in Aussagen gruppiert werden:

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

Kombinationen #

Modifiers können kombiniert werden, um komplexere Änderungen zu erstellen, indem beliebig viele verschiedene Befehle verwendet werden. Hier sind einige Beispiele:

Preis formatieren #

Hier ist ein Beispiel für mehrere zusammenhängende Ä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"
}]

Dies würde ein neues Feld namens price_alt mit dem Preis und DKK am Ende erstellen.

Vorher #

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

Danach #

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

Erstellen einer Tags-Liste #

Hier erstellen wir ein neues Listenattribut namens color_tags und fügen spezifische Tags hinzu, um bessere Filteroptionen zu erhalten:

[{
  "type": "set",
  "attribute": "color_tags",
  "new_value": []
},
{
  "type": "append",
  "attribute": "color_tags",
  "append_element": "red",
  "if": "'red' in tags"
},
{
  "type": "append",
  "attribute": "color_tags",
  "append_element": "blue",
  "if": "'blue' in tags"
},
{
  "type": "append",
  "attribute": "color_tags",
  "append_element": "green",
  "if": "'green' in tags"
}]

Dies würde ein neues Attribut namens color_tags mit den folgenden Werten erstellen:

Vorher #

{
  "id": 153,
  "name": "Lineman Chute",
  "price": 200.00,
  "tags": ["chute", "category-boots", "type-goalkeeper", "red", "blue", "green"]
}

Danach #

{
  "id": 153,
  "name": "Lineman Chute",
  "price": 200.00,
  "tags": ["chute", "category-boots", "type-goalkeeper", "red", "blue", "green"],
  "color_tags": ["red", "blue", "green"]
}

Diese Seite wurde von einer hilfreichen KI übersetzt, daher kann es zu Sprachfehlern kommen. Vielen Dank für Ihr Verständnis.