Modificadores
Resumen #
Modifiers es una herramienta poderosa que te permite cambiar los datos del producto después de la sincronización sin necesidad de que un desarrollador realice cambios en el feed de datos. Dado que actualmente es una herramienta experimental, solo el personal interno de Clerk puede usarla por ahora. Así que, por favor, contacta con el soporte si necesitas esta funcionalidad.
Soporta los siguientes comandos.
Comando | Efecto |
---|---|
set | Agrega un atributo a todos los productos |
delete | Elimina un atributo en todos los productos |
update | Actualiza un atributo en todos los productos |
type | Cambia el tipo de un atributo en todos los productos |
split | Divide una cadena por un separador, en una lista de cadenas. |
append | Agrega un valor a un atributo de lista existente |
expression | Evalúa una expresión en un atributo |
format | Formatea una cadena en un atributo |
lower | Formatea una cadena a todos los caracteres en minúsculas |
upper | Formatea una cadena a todos los caracteres en mayúsculas |
capitalize | Formatea una cadena a mayúsculas en la primera letra |
Todos los comandos también soportan la cláusula if. La cláusula if puede ser añadida a cualquier cosa con una declaración, y el comando solo se ejecutará en el atributo si la declaración evalúa a verdadero.
Comandos #
Aquí están cada uno de los comandos con un ejemplo, con variables según sea necesario. Todos los comandos toman un tipo que especifica qué comando ejecutar, y un attribute que indica en qué atributo ejecutar el comando.
Set #
Toma un new_value que muestra qué valor establecer en el atributo, puede ser usado tanto como un nuevo atributo, o sobre uno existente para reemplazarlo.
{
"type":"set",
"attribute": ATTRIBUTE,
"new_value": NEW_VALUE
}
Ejemplo En este ejemplo sobrescribiré el atributo ‘shown’ si el producto está fuera de stock.
{
"type": "set",
"attribute": "shown",
"new_value": "false",
"if": "stock < 1"
}
Antes #
{
"id": 153,
"name": "Lineman Chute",
"stock" : 0,
"shown" : true,
"price": 200.00,
}
Después #
{
"id": 153,
"name": "Lineman Chute",
"stock" : 0,
"shown" : false,
"price": 200.00,
}
Delete #
Elimina el atributo dado de todos los productos.
{
"type":"delete",
"attribute": ATTRIBUTE
}
Ejemplo Aquí eliminaré el atributo shown para todos los productos.
{
"type":"delete",
"attribute": "shown"
}
Antes #
{
"id": 153,
"name": "Lineman Chute",
"shown": true,
"price": 200.00,
}
Después #
{
"id": 153,
"name": "Lineman Chute",
"price": 200.00,
}
Update #
Si no eres técnico y estás leyendo esto. Prepárate porque estamos usando regex con la biblioteca python.
Update toma el atributo regexp que es una expresión regex que coincide con algunas partes del atributo y reemplaza cada grupo coincidente con el contenido de replace_by. Aquí hay una herramienta útil para que puedas crear tu regex.
Un ejemplo de regex podría ser [/]+ con un replace_by de ’/’, esto tomaría todos los lugares en el atributo que tienen múltiples / en fila y los reemplazaría con un solo /. Así, https://test//tests se convertiría en https:/test/tests.
{
"type":"update",
"attribute": "ATTRIBUTE",
"regexp": "MATCH_REGEX",
"replace_by": "STRING",
}
Ejemplo Aquí eliminaré una parte de la url, con una regex que coincide con la última parte de la url, asegurándome de escapar el /.
{
"type":"update",
"attribute": "url",
"regexp": "\/\/__example",
"replace_by": ""
}
Antes #
{
"id": 153,
"name": "Lineman Chute",
"url": "https://example.domain/product/153//__example",
"price": 200.00
}
Después #
{
"id": 153,
"name": "Lineman Chute",
"url": "https://example.domain/product/153",
"price": 200.00
}
Type #
Permite cambiar tipos en un atributo. Así que si los datos son un número y necesitas que sea una cadena, puedes usar esto para convertirlo.
{
"type":"type",
"attribute": "ATTRIBUTE",
"new_type": any of ["string", "int", "float", "boolean"]
}
Ejemplo Aquí estamos cambiando el tipo del precio, de una cadena a un float.
{
"type":"type",
"attribute": "price",
"new_type": "float"
}
Antes #
{
"id": 153,
"name": "Lineman Chute",
"price": "200",
}
Después #
{
"id": 153,
"name": "Lineman Chute",
"price": 200.00,
}
Split #
Permite dividir una cadena por un separador, en una lista de cadenas. Por defecto, divide por coma si no se da un separador.
{
"type":"split",
"attribute": "ATTRIBUTE",
"separator": "STRING"
}
Ejemplo Aquí estamos dividiendo un atributo con categorías.
{
"type":"split",
"attribute": "string_categories"
}
Antes #
{
"id": 153,
"name": "Lineman Chute",
"string_categories": "lineman, chute"
}
Después #
{
"id": 153,
"name": "Lineman Chute",
"string_categories":["lineman","chute"]
}
Append #
Permite agregar nuevos valores a un atributo de lista existente.
Esto podría ser agregar cadenas adicionales a un atributo tags
, o agregar una nueva categoría a un atributo categories
.
{
"type": "append",
"attribute": LIST_ATTRIBUTE,
"append_element": VALUE_TO_APPEND,
}
Ejemplo Aquí agregaré una nueva etiqueta al producto si tiene un precio inferior a 100.
{
"type": "append",
"attribute": "tags",
"append_element": "Cheap-Product",
"if": "price < 100"
}
Antes #
{
"name": "Lineman Goalkeeper",
"price": 99.99,
"tags": ["boots", "brand-lineman"]
}
Después #
{
"name": "Lineman Goalkeeper",
"price": 99.99,
"tags": ["boots", "brand-lineman", "Cheap-Product"]
}
Expression #
Evalúa una expresión que está en el atributo dado. Por ejemplo, si hay la cadena ‘price * 0.8’ dentro de un atributo y ejecutamos la expresión sobre él, el resultado será el 80% de lo que hay en el atributo de precio.
{
"type":"expression",
"new_value": NEW_VALUE,
"attribute": ATTRIBUTE
}
Ejemplo Evalúa una expresión que está en el atributo dado. Por ejemplo, si hay la cadena ‘price * 0.8’ dentro de un atributo y ejecutamos la expresión sobre él, el resultado será el 80% de lo que hay en el atributo de precio.
[
{
"type": "expression",
"attribute": "price_alt",
"new_value": "price * 0.65"
}
]
Antes #
{
"id": 153,
"name": "Lineman Chute",
"price": 200.00,
}
Después #
{
"id": 153,
"name": "Lineman Chute",
"price": 200.00,
"price_alt": "130.0",
}
If #
Si se añade if a cualquiera de los comandos anteriores con una declaración, el comando solo se ejecutará en atributos donde la declaración dada evalúe a verdadero.
Los operadores disponibles son:
Operador | Significado |
---|---|
= | Coincide con todos los productos donde el atributo es igual al valor. |
!= | Coincide con todos los productos donde el atributo no es igual al valor. |
> | Coincide con todos los productos donde el atributo es mayor que el valor. |
>= | Coincide con todos los productos donde el atributo es mayor o igual al valor. |
< | Coincide con todos los productos donde el atributo es menor que el valor. |
in | Coincide con una subcadena en una cadena o un elemento en una lista |
Al comparar un atributo con un valor específico, la sintaxis es:
{
"type":"delete"
"attribute": ATTRIBUTE,
"if":"ATTRIBUTE OPERATOR VALUE"
}
Al evaluar una subcadena en una cadena o un elemento en una lista, la sintaxis es:
{
"type":"delete"
"attribute": ATTRIBUTE,
"if":"VALUE in ATTRIBUTE"
}
Ejemplo Comparando con un valor específico
{
"type": "set",
"attribute": "shown",
"new_value": "false",
"if": "stock < 1"
}
Ejemplo Verificando una subcadena
{
"type": "set",
"attribute": "shown",
"new_value": "false",
"if": "'withdrawn' in name"
}
Las declaraciones if también se pueden agrupar usando ‘and’/‘or’ en las declaraciones:
{
"type": "set",
"attribute": "shown",
"new_value": "false",
"if": "(stock < 1 and 'withdrawn' in name) or brand = 'Nike'"
}
Combinaciones #
Modifiers se pueden combinar para crear modificaciones más complejas, utilizando cualquier número de diferentes comandos. Aquí hay algunos ejemplos:
Formateando el precio #
Aquí hay un ejemplo de múltiples modificaciones encadenadas. Aquí estoy creando un nuevo atributo llamado price_alt para un producto específico. Toma tanto el precio como la moneda y crea un nuevo campo con ellos.
[{
"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"
}]
Esto crearía un nuevo campo llamado price_alt con el precio y DKK al final.
Antes #
{
"id": 153,
"name": "Lineman Chute",
"price": 200.00
}
Después #
{
"id": 153,
"name": "Lineman Chute",
"price": 200.00,
"price_alt": "200.00DKK"
}
Creando lista de etiquetas #
Aquí estamos creando un nuevo atributo de lista llamado color_tags
y agregando etiquetas específicas a él para mejores opciones de filtrado:
[{
"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"
}]
Esto crearía un nuevo atributo llamado color_tags
con los siguientes valores:
Antes #
{
"id": 153,
"name": "Lineman Chute",
"price": 200.00,
"tags": ["chute", "category-boots", "type-goalkeeper", "red", "blue", "green"]
}
Después #
{
"id": 153,
"name": "Lineman Chute",
"price": 200.00,
"tags": ["chute", "category-boots", "type-goalkeeper", "red", "blue", "green"],
"color_tags": ["red", "blue", "green"]
}
Esta página ha sido traducida por una IA útil, por lo que puede contener errores de idioma. Muchas gracias por su comprensión.