Data

Modifikatorer

Lær hvordan man bruger modifikatorer.

Oversigt #

Modifiers er et kraftfuldt værktøj, der giver dig mulighed for at ændre produktdata efter synkronisering uden behov for at få en udvikler til at foretage ændringer i datafeedet. Da det i øjeblikket er et eksperimentelt værktøj, kan kun det interne Clerk-personale bruge det for nu. Så kontakt venligst support, hvis du har brug for denne funktionalitet.

Det understøtter følgende kommandoer.

KommandoEffekt
setTilføjer en attribut til alle produkter
deleteFjerner en attribut fra alle produkter
updateOpdaterer en attribut på alle produkter
typeÆndrer typen af en attribut på alle produkter
splitOpdeler en streng efter separator, til en liste af strenge.
appendTilføjer en værdi til en eksisterende listeattribut
expressionEvaluerer et udtryk i en attribut
formatFormaterer en streng i en attribut
lowerFormaterer en streng til alle små bogstaver
upperFormaterer en streng til alle store bogstaver
capitalizeFormaterer en streng til titelcase med første tegn i stort

Alle kommandoer understøtter også if-klausulen. If-klausulen kan tilføjes til alt med en erklæring, og kommandoen vil kun blive kørt på attributten, hvis erklæringen evalueres til sand.

Kommandoer #

Her er hver af kommandoerne med et eksempel, med variabler efter behov. Alle kommandoer tager en type, der specificerer, hvilken kommando der skal køres, og en attribut, der angiver, hvilken attribut kommandoen skal køres på.

Set #

Tager en new_value, der viser, hvilken værdi der skal indstilles for attributten, og kan bruges både som en ny attribut eller oven på en eksisterende for at erstatte den.

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

Eksempel I dette eksempel vil jeg overskrive den ‘vist’ attribut, hvis produktet er udsolgt.

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

Før #

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

Efter #

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

Delete #

Sletter den givne attribut fra alle produkter.

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

Eksempel Her vil jeg fjerne den viste attribut for alle produkter.

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

Før #

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

Efter #

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

Update #

Hvis du ikke er teknisk og læser dette. Spænd sikkerhedsselen, for vi bruger regex med python biblioteket.

Update tager attributten regexp, der er et regex-udtryk, der matcher på nogle dele af attributten og erstatter hver matchet gruppe med indholdet af replace_by. Her er et nyttigt værktøj til at skabe dit regex.

Et eksempel på regex kunne være [/]+ med en replace_by af ’/’, dette ville tage alle steder i attributten, der har flere /’s i træk og erstatte dem med en enkelt /. Så https://test//tests ville blive til https:/test/tests.

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

Eksempel Her vil jeg fjerne en del af URL’en med en regex, der matcher den sidste del af URL’en, og sørger for at undslippe /.

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

Før #

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

Efter #

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

Type #

Tillader ændring af typer i en attribut. Så hvis dataene er et tal, og du har brug for det som en streng, kan du bruge dette til at typecaste det.

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

Eksempel Her ændrer vi typen af prisen, fra en streng til en float.

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

Før #

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

Efter #

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

Split #

Tillader opdeling af en streng efter en separator, til en liste af strenge. Som standard opdeles der efter komma, hvis ingen separator er givet.

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

Eksempel Her opdeler vi en attribut med kategorier.

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

Før #

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

Efter #

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

Append #

Tillader tilføjelse af nye værdier til en eksisterende listeattribut.

Dette kunne være at tilføje yderligere strenge til en tags attribut eller tilføje en ny kategori til en categories attribut.

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

Eksempel Her vil jeg tilføje et nyt tag til produktet, hvis det har en pris under 100.

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

Før #

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

Efter #

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

Expression #

Evaluerer et udtryk, der er i den givne attribut. For eksempel, hvis der er strengen ‘price * 0.8’ inde i en attribut, og vi kører udtryk på den, vil resultatet være 80% af det, der er i prisattributten.

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

Eksempel Evaluerer et udtryk, der er i den givne attribut. For eksempel, hvis der er strengen ‘price * 0.8’ inde i en attribut, og vi kører udtryk på den, vil resultatet være 80% af det, der er i prisattributten.

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

Før #

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

Efter #

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

If #

Hvis if tilføjes til nogen af de ovenstående kommandoer med en erklæring, vil kommandoen kun køre på attributter, hvor den givne erklæring evalueres til sand.

Tilgængelige operatorer er:

OperatorBetydning
=Matcher alle produkter, hvor attributten er lig med værdi.
!=Matcher alle produkter, hvor attributten ikke er lig med værdi.
>Matcher alle produkter, hvor attributten er større end værdi.
>=Matcher alle produkter, hvor attributten er større end eller lig med værdi.
<Matcher alle produkter, hvor attributten er mindre end værdi.
inMatcher en understreng i en streng eller et element i en liste

Når man sammenligner en attribut med en specifik værdi, er syntaksen:

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

Når man evaluerer en understreng i en streng eller et element i en liste, er syntaksen:

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

Eksempel Sammenligning med en specifik værdi

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

Eksempel Tjekker en understreng

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

if udsagn kan også grupperes ved hjælp af ‘and’/‘or’ i udsagn:

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

Kombinationer #

Modifiers kan kombineres for at skabe mere komplekse ændringer, ved at bruge et vilkårligt antal forskellige kommandoer. Her er nogle eksempler:

Formatering af pris #

Her er et eksempel på flere ændringer kædet sammen. Her laver jeg en ny attribut kaldet price_alt for et specifikt produkt. Den tager både prisen og valutaen og laver et nyt felt med dem.

[{
  "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"
}]

Dette ville lave et nyt felt kaldet price_alt med prisen og DKK til slut.

Før #

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

Efter #

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

Oprettelse af tags-liste #

Her opretter vi en ny listeattribut kaldet color_tags og tilføjer specifikke tags til den for bedre filtreringsmuligheder:

[{
  "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"
}]

Dette ville lave en ny attribut kaldet color_tags med følgende værdier:

Før #

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

Efter #

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

Denne side er oversat af en hjælpsom AI, og der kan derfor være sproglige fejl. Tak for forståelsen.