Sintaxis básica
Liquid usa dos estructuras de sintaxis principales:- Etiquetas de salida:
{{ ... }}— Muestra datos de una variable u objeto. - Etiquetas de lógica:
{% ... %}— Ejecuta declaraciones condicionales o bucles.
Condicionales
Operadores
==,!=,>,<,>=,<=and,orcontains(cadena o array)
liquid
if, elsif, else
liquid
unless
liquid
Filtros
Aplica filtros usando{{ variable | filter }} para ajustar cómo se muestran los datos.
default
Asigna un valor predeterminado si la propiedad está vacía o no existe.
liquid
date
El filtro date convierte una marca de tiempo en otro formato de fecha. El formato para esta sintaxis es el mismo que strftime. La entrada usa el mismo formato que Time.parse de Ruby.
Establece fechas como una marca de tiempo unix en segundos con tags. Esto permite el uso tanto de personalización con sintaxis liquid como de segmentación con Operadores de tiempo. Por ejemplo, un tag podría verse así: bill_due : 1687968776
liquid
Result
liquid
Result
liquid
Result
now (o today) junto con el filtro date.
liquid
Result
La hora actual se renderizará en el mensaje según cuándo se envíe el mensaje
al destinatario. Si estás probando el mensaje, verás la hora actual
como cuando se envió el mensaje de prueba.
capitalize
Este filtro hace que el primer carácter de una cadena esté en mayúscula y convierte los caracteres restantes a minúsculas.
liquid
Result
round
Este filtro redondea un número al entero más cercano, o, si se pasa un número como argumento, a ese número de decimales.
liquid
Result
pluralize
Este filtro devuelve la forma singular o plural de una cadena basándose en un número dado. El número debe ser un número entero y puede proporcionarse como cadena. Deben proporcionarse tanto la forma singular como la plural de una cadena.
liquid
Result
Iteración
Bucles for
Ejecuta repetidamente un bloque de código. Para una lista completa de atributos disponibles dentro de un bucle for, consulta la documentación del bucle for de Liquid.
liquid
Request Body
Result
limit & offset
Limita el bucle al número especificado de iteraciones. Por ejemplo, si solo quieres mostrar 4 productos en un mensaje, podrías usar Límites y Desplazamientos para especificar el número de productos mostrados.
Data
liquid
Result
Data
liquid
Result
where
Crea un array que incluye solo los objetos con un valor de propiedad dado, o cualquier valor verdadero por defecto.
En este ejemplo, supón que tienes una lista de productos y quieres mostrar tus productos de cocina por separado. Usando where, puedes crear un array que contenga solo los productos que tienen un type de kitchen.
Data
liquid
Result
Manipulación de cadenas
Aplica filtros de cadena para ajustar cómo se muestran los valores de etiquetas o cadenas en línea en los mensajes.| Comando | Descripción | Ejemplo | Salida de ejemplo |
|---|---|---|---|
replace | Reemplaza una subcadena con otra cadena. | {{ 'hello world' | replace: 'world', 'there' }} | hello there |
capitalize | Capitaliza la primera letra de una cadena. | {{ 'hello' | capitalize }} | Hello |
upcase | Convierte una cadena a mayúsculas. | {{ 'hello' | upcase }} | HELLO |
downcase | Convierte una cadena a minúsculas. | {{ 'HELLO' | downcase }} | hello |
strip | Elimina espacios en blanco iniciales y finales de una cadena. | {{ ' hello ' | strip }} | hello |
strip_html | Elimina todas las etiquetas HTML de una cadena. | {{ '<p>hello</p>' | strip_html }} | hello |
truncate | Acorta una cadena a una longitud especificada, agregando puntos suspensivos (…) si es necesario. | {{ 'This is a long sentence' | truncate: 10 }} | This is a… |
truncatewords | Trunca una cadena después de un cierto número de palabras. | {{ 'This is a long sentence' | truncatewords: 2 }} | This is… |
replace_first | Reemplaza la primera ocurrencia de una subcadena. | {{ 'hello world' | replace_first: 'world', 'there' }} | hello there |
prepend | Agrega una cadena al principio de otra cadena. | {{ 'world' | prepend: 'hello ' }} | hello world |
append | Agrega una cadena al final de otra cadena. | {{ 'hello' | append: ' world' }} | hello world |
lstrip | Elimina espacios en blanco iniciales de una cadena. | {{ ' hello' | lstrip }} | hello |
rstrip | Elimina espacios en blanco finales de una cadena. | {{ 'hello ' | rstrip }} | hello |
Preguntas frecuentes
¿Por qué no funciona la sustitución?
- Los Mensajes In-App no soportan sustitución de propiedades.
- La sustitución de tag no funciona cuando se usa “Send Test Message”.
- Las claves de tag deben ser alfanuméricas, o usar _ y - (sin puntos ni espacios).
- La sustitución no aparece en modo de vista previa — envía un mensaje real para probar.
¿Cuándo debo usar default en lugar de if/else?
Usa el filtro default cuando solo el valor de la variable necesita un fallback y el texto circundante permanece igual.
liquid
Result (name = "Jon")
Result (name está vacío)
if/else cuando el texto circundante, la puntuación o la estructura de la oración también necesiten cambiar según si existe la variable.
liquid
Result (name = "Jon")
Result (name está vacío)
¿Cómo controlar espacios en blanco y saltos de línea?
Usa guiones:{{- ... -}}, {%- ... -%} para recortar espacios en blanco circundantes.
Ver Control de espacios en blanco para más detalles.
¿Cómo manejar contenido generado por usuarios?
Envuelve el texto generado por usuarios en{% raw %} y {% endraw %} para prevenir el análisis de Liquid. Ver sintaxis “raw”.
Páginas relacionadas
Personalización de mensajes
Descripción general de todas las opciones de personalización, incluyendo Liquid, Data Feeds y eventos personalizados.
Data Feeds
Obtén datos en tiempo real de tus APIs en los mensajes en el momento del envío.
Etiquetas
Almacena pares clave-valor en usuarios para segmentación y personalización Liquid.
Plantillas
Crea plantillas de mensajes reutilizables con personalización Liquid integrada.