Operadores
Liquid é compatível com muitos operadores que podem ser usados em suas instruções condicionais. Esta página aborda os operadores compatíveis com Liquid e apresenta casos de uso de como você pode utilizá-los em suas mensagens.
Esta tabela lista os operadores compatíveis. Observe que parênteses são caracteres inválidos em Liquid e impedem que suas tags funcionem.
| Sintaxe | Descrição do operador |
|---|---|
| == | igual a |
| != | diferente de |
| > | maior que |
| < | menor que |
| >= | maior ou igual a |
| <= | menor ou igual a |
| or | condição A ou condição B |
| and | condição A e condição B |
| contains | verifica se uma string ou array de strings contém uma string |
Os operadores podem ser usados em instruções condicionais (if, elsif, unless), mas não em instruções assign, loops for, instruções case/when ou colchetes de acesso a arrays. Para uma explicação completa, consulte Onde usar operadores e filtros.
Agrupando condições sem parênteses
Liquid não é compatível com parênteses para agrupar expressões. Para avaliar lógica booleana complexa como (a and b) or c, use instruções if aninhadas ou variáveis intermediárias.
Por exemplo, para verificar se um valor satisfaz uma condição composta, atribua uma variável intermediária:
1
2
3
4
5
6
7
8
9
10
{% assign qualifies = false %}
{% if points > 100 %}
{% assign qualifies = true %}
{% elsif points == 100 and member_level == 'gold' %}
{% assign qualifies = true %}
{% endif %}
{% if qualifies %}
You qualify for a reward!
{% endif %}
Tutoriais
Vamos ver alguns tutoriais para aprender a usar esses operadores em suas campanhas de marketing:
Escolher uma mensagem com um atributo personalizado de número inteiro
Vamos enviar notificações por push com descontos promocionais personalizados para usuários que fizeram ou não compras. A notificação por push usará um atributo personalizado de número inteiro chamado total_spend para verificar o gasto total de um usuário.
- Escreva uma instrução condicional usando o operador maior que (
>) para verificar se o gasto total do usuário é maior que0, indicando que ele fez uma compra. Em seguida, crie uma mensagem para enviar a esses usuários.
1
2
{% if {{custom_attribute.${total_spend}}} >0 %}
Surprise! We added a 15% discount code to your account that automatically applies to your next order.
- Adicione a tag
{% else %}para capturar usuários cujo gasto total é igual a0ou não existe. Em seguida, crie uma mensagem para enviar a esses usuários.
1
2
{% else %}
Need a sign to update your wardrobe? We added a 15% discount code to your account that will automatically apply to your first order.
- Feche a lógica condicional com a tag
{% endif %}.
1
{% endif %}

Código Liquid completo
1
2
3
4
5
{% if {{custom_attribute.${total_spend}}} >0 %}
Surprise! We added a 15% discount code to your account that automatically applies to your next order.
{% else %}
Need a sign to update your wardrobe? We added a 15% discount code to your account that will automatically apply to your first order.
{% endif %}
Agora, se o atributo personalizado “Total Spend” de um usuário for maior que 0, ele receberá a mensagem:
1
Surprise! We added a 15% discount code to your account that automatically applies to your next order.
Se o atributo personalizado “Total Spend” de um usuário não existir ou for igual a 0, ele receberá a seguinte mensagem:
1
Need a sign to update your wardrobe? We added a 15% discount code to your account that will automatically apply to your first order.
Escolher uma mensagem com um atributo personalizado de string
Vamos enviar notificações por push para os usuários e personalizar a mensagem com base no jogo mais recente de cada um. Isso usará um atributo personalizado de string chamado recent_game para verificar qual jogo o usuário jogou por último.
- Escreva uma instrução condicional usando o operador igual a (
==) para verificar se o jogo mais recente do usuário é Awkward Dinner Party. Em seguida, crie uma mensagem para enviar a esses usuários.
1
2
{% if {{custom_attribute.${recent_game}}} == 'Awkward Dinner Party' %}
You are formally invited to our next dinner party. Log on next week for another round of delectable dishes and curious conversations.
- Use a tag
elsifcom o operador igual a (==) para verificar se o jogo mais recente do usuário é Proxy War 3: War of Thirst. Em seguida, crie uma mensagem para enviar a esses usuários.
1
2
{% elsif {{custom_attribute.${recent_game}}} == 'Proxy War 3: War of Thirst' %}
Your fleet awaits your next orders. Log on when you're ready to rejoin the war for hydration.
- Use a tag
elsifcom os operadores “diferente de” (!=) e “e” (and) para verificar se o usuário tem um jogo recente (ou seja, o valor não está em branco) e se o jogo não é Awkward Dinner Party nem Proxy War 3: War of Thirst. Em seguida, crie uma mensagem para enviar a esses usuários.
1
2
{% elsif {{custom_attribute.${recent_game}}} != blank and {{custom_attribute.${recent_game}}} != 'Awkward Dinner Party' and {{custom_attribute.${recent_game}}} != 'Proxy War 3: War of Thirst' %}
Limited Time Deal! Get 15% off our best-selling classics!
- Adicione a tag
{% else %}para capturar usuários que não têm um jogo recente. Em seguida, crie uma mensagem para enviar a esses usuários.
1
2
{% else %}
Hey! I've got a deal for you. Buy 2 of our newest releases and get 10% off!
- Feche a lógica condicional com a tag
{% endif %}.
1
{% endif %}
Código Liquid completo
1
2
3
4
5
6
7
8
9
{% if {{custom_attribute.${recent_game}}} == 'Awkward Dinner Party' %}
You are formally invited to our next dinner party. Log on next week for another round of delectable dishes and curious conversations.
{% elsif {{custom_attribute.${recent_game}}} == 'Proxy War 3: War of Thirst' %}
Your fleet awaits your next orders. Log on when you're ready to rejoin the war for hydration.
{% elsif {{custom_attribute.${recent_game}}} != blank and {{custom_attribute.${recent_game}}} != 'Awkward Dinner Party' and {{custom_attribute.${recent_game}}} != 'Proxy War 3: War of Thirst' %}
Limited Time Deal! Get 15% off our best-selling classics!
{% else %}
Hey! I've got a deal for you. Buy 2 of our newest releases and get 10% off!
{% endif %}

Agora, se o último jogo do usuário foi Awkward Dinner Party, ele receberá esta mensagem:
1
You are formally invited to our next dinner party. Log on next week for another round of delectable dishes and curious conversations.
Se o jogo mais recente do usuário for Proxy War 3: War of Thirst, ele receberá esta mensagem:
1
Your fleet awaits your next orders. Log on when you're ready to rejoin the war for hydration.
Se o usuário jogou recentemente um jogo que não era Awkward Dinner Party nem Proxy War 3: War of Thirst, ele receberá esta mensagem:
1
Limited Time Deal! Get 15% off our best-selling classics!
Se o usuário não jogou nenhum jogo ou se esse atributo personalizado não existe no perfil dele, ele receberá esta mensagem:
1
Hey! I've got a deal for you. Buy 2 of our newest releases and get 10% off!
Cancelar mensagem com base no local
Você pode cancelar uma mensagem com base em praticamente qualquer coisa. Vamos cancelar uma mensagem se o usuário não estiver em uma área específica, já que ele pode não se qualificar para a promoção, evento ou entrega.
- Escreva uma instrução condicional usando o operador igual a (
==) para verificar se o fuso horário do usuário éAmerica/Los_Angelese, em seguida, crie uma mensagem para enviar a esses usuários.
1
2
{% if {{${time_zone}}} == 'America/Los_Angeles' %}
Stream now!
- Para evitar o envio de mensagens a usuários fora do fuso horário
America/Los_Angeles, envolva as tags{% else %}e{% endif %}ao redor de uma tag{% abort_message () %}.
1
2
3
{% else %}
{% abort_message () %}
{% endif %}
Código Liquid completo
1
2
3
4
5
{% if {{${time_zone}}} =='America/Los_Angeles' %}
Stream now!
{% else %}
{% abort_message () %}
{% endif %}

Você também pode cancelar mensagens com base em Conteúdo conectado.
Solução de problemas
A pré-visualização pode converter incorretamente os tipos de propriedade
Ao pré-visualizar uma mensagem no dashboard, a maioria das variáveis (como atributos personalizados) é convertida para o tipo correto. No entanto, algumas variáveis não têm um tipo definido que a pré-visualização possa consultar:
api_trigger_propertiescanvas_entry_propertiescontext
Para essas propriedades, a pré-visualização tenta inferir o tipo a partir do valor. Isso significa que um valor que você pretende que seja uma string pode ser interpretado incorretamente como um número. Por exemplo, se o valor de uma propriedade for a string "3", a pré-visualização pode convertê-lo para o inteiro 3, o que pode causar comportamento inesperado em operações de string como contains ou split.
Se você observar resultados inesperados na pré-visualização ao usar esses tipos de propriedade, lembre-se de que a inferência de tipo da pré-visualização pode não corresponder ao que acontece no momento do envio. No momento do envio, os tipos de dados reais do evento de disparo ou da chamada de API são preservados.
Para forçar um tipo específico na pré-visualização, você pode converter explicitamente o valor:
1
2
3
4
5
{% comment %} Force a value to be treated as a number {% endcomment %}
{% assign orders = {{canvas_entry_properties.${number_of_orders}}} | plus: 0 %}
{% comment %} Force a value to be treated as a string {% endcomment %}
{% assign code = {{api_trigger_properties.${promo_code}}} | append: "" %}