Modificatori
Panoramica #
Modifiers è uno strumento potente che ti consente di modificare i dati del prodotto dopo la sincronizzazione senza la necessità di coinvolgere uno sviluppatore per apportare modifiche nel data-feed. Poiché attualmente è uno strumento sperimentale, solo il personale interno del Clerk può utilizzarlo per ora. Quindi contatta il supporto se hai bisogno di questa funzionalità.
Supporta i seguenti comandi.
Comando | Effetto |
---|---|
set | Aggiunge un attributo a tutti i prodotti |
delete | Rimuove un attributo da tutti i prodotti |
update | Aggiorna un attributo su tutti i prodotti |
type | Cambia il tipo di un attributo su tutti i prodotti |
split | Divide una stringa per separatore, in un elenco di stringhe. |
append | Aggiunge un valore a un attributo di elenco esistente |
expression | Valuta un’espressione in un attributo |
format | Formatta una stringa in un attributo |
lower | Formattta una stringa in caratteri minuscoli |
upper | Formattta una stringa in caratteri maiuscoli |
capitalize | Formattta una stringa in maiuscolo per il primo carattere |
Tutti i comandi supportano anche la clausola if. La clausola if può essere aggiunta a qualsiasi cosa con una dichiarazione, e il comando verrà eseguito sull’attributo solo se la dichiarazione è valutata come vera.
Comandi #
Ecco ciascuno dei comandi con un esempio, con variabili come necessario. Tutti i comandi richiedono un tipo che specifica quale comando eseguire, e un attributo che indica su quale attributo eseguire il comando.
Set #
Richiede un new_value che mostra quale valore impostare per l’attributo, può essere utilizzato sia come un nuovo attributo, sia sopra uno esistente per sostituirlo.
{
"type":"set",
"attribute": ATTRIBUTE,
"new_value": NEW_VALUE
}
Esempio In questo esempio sovrascriverò l’attributo ‘shown’ se il prodotto è esaurito.
{
"type": "set",
"attribute": "shown",
"new_value": "false",
"if": "stock < 1"
}
Prima #
{
"id": 153,
"name": "Lineman Chute",
"stock" : 0,
"shown" : true,
"price": 200.00,
}
Dopo #
{
"id": 153,
"name": "Lineman Chute",
"stock" : 0,
"shown" : false,
"price": 200.00,
}
Delete #
Elimina l’attributo fornito da tutti i prodotti.
{
"type":"delete",
"attribute": ATTRIBUTE
}
Esempio Qui rimuoverò l’attributo shown per tutti i prodotti.
{
"type":"delete",
"attribute": "shown"
}
Prima #
{
"id": 153,
"name": "Lineman Chute",
"shown": true,
"price": 200.00,
}
Dopo #
{
"id": 153,
"name": "Lineman Chute",
"price": 200.00,
}
Update #
Se non sei tecnico e stai leggendo questo. Preparati perché stiamo usando regex con la libreria python.
Update richiede l’attributo regexp che è un’espressione regex che corrisponde ad alcune parti dell’attributo e sostituisce ciascun gruppo corrispondente con il contenuto di replace_by. Ecco uno strumento utile per creare la tua regex.
Un esempio di regex potrebbe essere [/]+ con un replace_by di ’/’, questo prenderebbe tutti i posti nell’attributo che hanno più / in fila e li sostituirebbe con un singolo /. Quindi https://test//tests diventerebbe https:/test/tests.
{
"type":"update",
"attribute": "ATTRIBUTE",
"regexp": "MATCH_REGEX",
"replace_by": "STRING",
}
Esempio Qui rimuoverò una parte dell’url, con una regex che corrisponde all’ultima parte dell’url, assicurandomi di eseguire l’escape del /.
{
"type":"update",
"attribute": "url",
"regexp": "\/\/__example",
"replace_by": ""
}
Prima #
{
"id": 153,
"name": "Lineman Chute",
"url": "https://example.domain/product/153//__example",
"price": 200.00
}
Dopo #
{
"id": 153,
"name": "Lineman Chute",
"url": "https://example.domain/product/153",
"price": 200.00
}
Type #
Consente di cambiare i tipi in un attributo. Quindi se i dati sono un numero e hai bisogno che sia una stringa, puoi usare questo per fare il typecast.
{
"type":"type",
"attribute": "ATTRIBUTE",
"new_type": any of ["string", "int", "float", "boolean"]
}
Esempio Qui stiamo cambiando il tipo del prezzo, da stringa a float.
{
"type":"type",
"attribute": "price",
"new_type": "float"
}
Prima #
{
"id": 153,
"name": "Lineman Chute",
"price": "200",
}
Dopo #
{
"id": 153,
"name": "Lineman Chute",
"price": 200.00,
}
Split #
Consente di dividere una stringa per un separatore, in un elenco di stringhe. Per impostazione predefinita, divide per virgola se non viene fornito alcun separatore.
{
"type":"split",
"attribute": "ATTRIBUTE",
"separator": "STRING"
}
Esempio Qui stiamo dividendo un attributo con categorie.
{
"type":"split",
"attribute": "string_categories"
}
Prima #
{
"id": 153,
"name": "Lineman Chute",
"string_categories": "lineman, chute"
}
Dopo #
{
"id": 153,
"name": "Lineman Chute",
"string_categories":["lineman","chute"]
}
Append #
Consente di aggiungere nuovi valori a un attributo di elenco esistente.
Questo potrebbe essere l’aggiunta di stringhe aggiuntive a un attributo tags
, o l’aggiunta di una nuova categoria a un attributo categories
.
{
"type": "append",
"attribute": LIST_ATTRIBUTE,
"append_element": VALUE_TO_APPEND,
}
Esempio Qui aggiungerò un nuovo tag al prodotto se ha un prezzo inferiore a 100.
{
"type": "append",
"attribute": "tags",
"append_element": "Cheap-Product",
"if": "price < 100"
}
Prima #
{
"name": "Lineman Goalkeeper",
"price": 99.99,
"tags": ["boots", "brand-lineman"]
}
Dopo #
{
"name": "Lineman Goalkeeper",
"price": 99.99,
"tags": ["boots", "brand-lineman", "Cheap-Product"]
}
Expression #
Valuta un’espressione che si trova nell’attributo dato. Ad esempio, se c’è la stringa ‘price * 0.8’ all’interno di un attributo e eseguiamo l’espressione su di esso, il risultato sarà l'80% di ciò che c’è nell’attributo prezzo.
{
"type":"expression",
"new_value": NEW_VALUE,
"attribute": ATTRIBUTE
}
Esempio Valuta un’espressione che si trova nell’attributo dato. Ad esempio, se c’è la stringa ‘price * 0.8’ all’interno di un attributo e eseguiamo l’espressione su di esso, il risultato sarà l'80% di ciò che c’è nell’attributo prezzo.
[
{
"type": "expression",
"attribute": "price_alt",
"new_value": "price * 0.65"
}
]
Prima #
{
"id": 153,
"name": "Lineman Chute",
"price": 200.00,
}
Dopo #
{
"id": 153,
"name": "Lineman Chute",
"price": 200.00,
"price_alt": "130.0",
}
If #
Se if è aggiunto a uno qualsiasi dei comandi sopra con una dichiarazione, il comando verrà eseguito solo sugli attributi dove la dichiarazione data è valutata come vera.
Gli operatori disponibili sono:
Operatore | Significato |
---|---|
= | Corrisponde a tutti i prodotti dove l’attributo è uguale al valore. |
!= | Corrisponde a tutti i prodotti dove l’attributo non è uguale al valore. |
> | Corrisponde a tutti i prodotti dove l’attributo è maggiore del valore. |
>= | Corrisponde a tutti i prodotti dove l’attributo è maggiore o uguale al valore. |
< | Corrisponde a tutti i prodotti dove l’attributo è inferiore al valore. |
in | Corrisponde a una sottostringa in una stringa o a un elemento in un elenco |
Quando si confronta un attributo con un valore specifico, la sintassi è:
{
"type":"delete"
"attribute": ATTRIBUTE,
"if":"ATTRIBUTE OPERATOR VALUE"
}
Quando si valuta una sottostringa in una stringa o un elemento in un elenco, la sintassi è:
{
"type":"delete"
"attribute": ATTRIBUTE,
"if":"VALUE in ATTRIBUTE"
}
Esempio Confronto con un valore specifico
{
"type": "set",
"attribute": "shown",
"new_value": "false",
"if": "stock < 1"
}
Esempio Controllo di una sottostringa
{
"type": "set",
"attribute": "shown",
"new_value": "false",
"if": "'withdrawn' in name"
}
Le dichiarazioni if possono anche essere raggruppate utilizzando ‘and’/‘or’ nelle dichiarazioni:
{
"type": "set",
"attribute": "shown",
"new_value": "false",
"if": "(stock < 1 and 'withdrawn' in name) or brand = 'Nike'"
}
Combinazioni #
I Modifiers possono essere combinati per creare modifiche più complesse, utilizzando qualsiasi numero di comandi diversi. Ecco alcuni esempi:
Formattazione del prezzo #
Ecco un esempio di più modifiche concatenate insieme. Qui sto creando un nuovo attributo chiamato price_alt per un prodotto specifico. Prende sia il prezzo che la valuta e crea un nuovo campo con essi.
[{
"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"
}]
Questo creerebbe un nuovo campo chiamato price_alt con il prezzo e DKK alla fine.
Prima #
{
"id": 153,
"name": "Lineman Chute",
"price": 200.00
}
Dopo #
{
"id": 153,
"name": "Lineman Chute",
"price": 200.00,
"price_alt": "200.00DKK"
}
Creazione di un elenco di tag #
Qui stiamo creando un nuovo attributo di elenco chiamato color_tags
e aggiungendo tag specifici ad esso per migliori opzioni di filtro:
[{
"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"
}]
Questo creerebbe un nuovo attributo chiamato color_tags
con i seguenti valori:
Prima #
{
"id": 153,
"name": "Lineman Chute",
"price": 200.00,
"tags": ["chute", "category-boots", "type-goalkeeper", "red", "blue", "green"]
}
Dopo #
{
"id": 153,
"name": "Lineman Chute",
"price": 200.00,
"tags": ["chute", "category-boots", "type-goalkeeper", "red", "blue", "green"],
"color_tags": ["red", "blue", "green"]
}
Questa pagina è stata tradotta da un'utile intelligenza artificiale, quindi potrebbero esserci errori linguistici. Grazie per la comprensione.