Panoramica #
Modificatori è un potente strumento che consente di modificare i dati dei prodotti dopo la sincronizzazione, senza dover ricorrere a uno sviluppatore per apportare modifiche al flusso di dati. Poiché si tratta di uno strumento sperimentale, per il momento può essere utilizzato solo dal personale interno dell’ufficio. Pertanto, se avete bisogno di questa funzionalità, contattate il supporto.
Supporta i seguenti comandi.
Comando | Effetto |
---|---|
imposta | Aggiunge un attributo a tutti i prodotti |
delete | Rimuove un attributo in tutti i prodotti |
update | Aggiorna un attributo su tutti i prodotti |
type | Cambia il tipo di attributo in tutti i prodotti |
split | Divide una stringa per separatore, in un elenco di stringhe. |
expression | Valuta un’espressione in un attributo |
format | Formatta una stringa in un attributo |
inferiore | Formatta una stringa con tutti i caratteri minuscoli |
upper | Formatta una stringa con tutti i caratteri maiuscoli |
Formatta una stringa con il primo carattere in maiuscolo. |
Tutti i comandi supportano anche la clausola if. La clausola if può essere aggiunta a qualsiasi cosa con un’affermazione e il comando verrà eseguito sull’attributo solo se l’affermazione è vera.
Comandi #
Qui di seguito sono riportati tutti i comandi con un esempio, con le variabili necessarie. Tutti i comandi prendono un tipo che specifica quale comando eseguire e un attributo che indica su quale attributo eseguire il comando.
Imposta #
Prende un nuovo_valore che indica il valore a cui impostare l’attributo; può essere usato sia come nuovo attributo, sia in aggiunta a uno esistente per sostituirlo.
{
"tipo": "set",
"attributo": ATTRIBUTO,
"nuovo_valore": NUOVO_VALORE
}
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,
}
Elimina #
Elimina l’attributo indicato da tutti i prodotti.
{
"type":"delete",
"attribute": ATTRIBUTE
}
Esempio Qui rimuoverò l’attributo mostrato 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,
}
Aggiornamento ### Se non siete tecnici e state leggendo questo articolo. Tenetevi forte perché stiamo usando regex con la libreria python.
Update prende l’attributo regexp che è un’espressione regex che corrisponde ad alcune parti dell’attributo e sostituisce ogni gruppo corrispondente con il contenuto di replace_by. Ecco uno strumento utile per creare la propria regex.
Un esempio di regex potrebbe essere [/]+ con un replace_by di ’/’, questo prenderebbe tutti i punti dell’attributo che hanno più / di 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 macina l’ultima parte dell’url, assicurandosi di fare 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
}
Tipo #
Consente di cambiare il tipo di attributo. Quindi, se il dato è un numero e si vuole che sia una stringa, si può usare questa funzione per effettuare la tipizzazione.
{
"type":"type",
"attribute": "ATTRIBUTE",
"new_type": any of ["string", "int", "float", "boolean"]
}
Esempio Qui stiamo cambiando il tipo di 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,
}
Dividere #
Consente di dividere una stringa da un separatore in un elenco di stringhe. Se non viene fornito alcun separatore, la suddivisione avviene per virgola.
{
"type":"split",
"attribute": "ATTRIBUTE",
"separator": "STRING"
}
Esempio Qui stiamo dividendo un attributo con delle 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"]
}
Formato #
Consente di creare una stringa formattata.
Potrebbe trattarsi della creazione di un nuovo valore valled {price} {currency}.
Se i dati necessari non sono un attributo del prodotto, è possibile aggiungere l’attributo extra al comando.
{
"type":"format",
"attribute": ATTRIBUTE,
"new_value": VALUE_TO_SET,
... : ... #(can include more attributes that are needed for formating)
}
Esempio Qui aggiungerò una valuta alla fine del prezzo; per prima cosa dovrò cambiare il tipo in una stringa, poi iniettare la sintassi formattata e infine farla formattare. Il comando update aggiunge il valore in replace_by alla fine del prezzo.
[
{
"type":"format",
"attribute": "price_with_currency",
"new_value": "{price} {currency}"
}
]
Prima #
{
"id": 153,
"name": "Lineman Chute",
"currency": "DKK",
"price": 200.00,
}
Dopo #
{
"id": 153,
"name": "Lineman Chute",
"currency": "DKK",
"price": 200.00,
"price_with_currency": "200.00 DKK"
}
Espressione #
Valuta un’espressione che si trova nell’attributo dato. Per esempio, se all’interno di un attributo c’è la stringa ‘prezzo * 0,8’ e si esegue un’espressione su di essa, il risultato sarà l'80% di quanto contenuto nell’attributo prezzo.
{
"type":"expression",
"new_value": NEW_VALUE,
"attribute": ATTRIBUTE
}
Esempio Valuta un’espressione che si trova nell’attributo dato. Ad esempio, se all’interno di un attributo c’è la stringa ‘prezzo * 0,8’ e si esegue un’espressione su di essa, il risultato sarà l'80% di quanto contenuto 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",
}
Se #
Se if viene aggiunto a uno dei comandi precedenti con un’affermazione, il comando verrà eseguito solo sugli attributi in cui l’affermazione data è vera.
Gli operatori disponibili sono:
Operatore | Significato |
---|---|
= | Corrisponde a tutti i prodotti in cui l’attributo è uguale al valore. |
!= | Corrisponde a tutti i prodotti in cui l’attributo non è uguale al valore. |
> | Corrisponde a tutti i prodotti in cui l’attributo è maggiore del valore. |
>= | Abbina tutti i prodotti in cui l’attributo è maggiore o uguale al valore. |
< | Corrisponde a tutti i prodotti in cui 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 usando ‘and’/‘or’ nelle dichiarazioni:
{
"type": "set",
"attribute": "shown",
"new_value": "false",
"if": "(stock < 1 and 'withdrawn' in name) or brand = 'Nike'"
}
Combinazioni #
Ecco un esempio di modifiche multiple concatenate. 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"
}]
In questo modo si creerebbe un nuovo campo chiamato price_alt con il prezzo e le 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"
}