Variáveis e Líquido

Tudo o que é dinâmico neste aplicativo é escrito em Liquid - a mesma linguagem de modelos utilizada pelos temas dShopify. O senhor insere um marcador de posição, e o aplicativo o preenche no momento do envio.

Os namespaces

Espaço de nomes De onde vem o valor Disponível em
{{ variables.key }} O campo “Variáveis (JSON)” na ação Shopify Flow Assunto e corpo do e-mail, URL HTTP, cabeçalhos e corpo
{{ secrets.key }} A página “Segredos” O mesmo, além do nome de usuário e da senha do SMTP
{{ shop.name }}, {{ shop.domain }}, {{ shop.email }} Sua loja Ações de e-mail e HTTP
{{ language }} O idioma enviado na etapa “Shopify Flow”; caso contrário, o idioma principal do layout Assunto do e-mail, texto de pré-visualização e corpo da mensagem - consulte Envie e-mails no idioma do seu cliente
{{ unsubscribe_link }}, {{ unsubscribe_url }} O link para cancelar a inscrição do destinatário, apenas em modelos de marketing Corpo do e-mail; vazio em layouts transacionais - veja abaixo
{{ flow.key }} The raw payload of Shopify Flow Apenas solicitações HTTP

O cartão “Variáveis do sistema” no editor lista os valores da loja com seus conteúdos atuais; ao clicar em um deles, ele é copiado.

Passagem de variáveis de umShopify Flow

Na ação “Shopify Flow”, insira um objeto JSON no campo “Variáveis (JSON)”:

{
  "firstName": "{{ customer.firstName }}",
  "orderNumber": "{{ order.name }}",
  "total": "{{ order.totalPriceSet.shopMoney.amount }}"
}

Em seguida, faça referência a elas em qualquer parte do layout:

Hi {{ variables.firstName }}, your order {{ variables.orderNumber }} is on its way.

A escolha das chaves é sua. O nome que você indicar à esquerda é o que deverá ser utilizado após variables., respeitando exatamente a grafia e o uso de maiúsculas.

Não é necessário escrever esse JSON manualmente. Cada layout possui um cartão “Use inShopify Flow” com o JSON correto, pronto para ser copiado - consulte Transmissão de dados de umShopify Flow.

Filtros

Os filtros de líquido padrão funcionam. O mais útil é o default, que protege contra valores nulos:

Hi {{ variables.firstName | default: "there" }}

Outros se comportam como seria de se esperar:

{{ variables.productTitle | upcase }}
{{ variables.total | round: 2 }}
{{ variables.note | truncate: 100 }}

Quando uma variável é exibida em branco

Um envio em tempo real que substitui qualquer variável referenciada por “nothing” recebe um selo de “Variáveis vazias” no Histórico. Ao abrir a entrada, as variáveis recebem nomes e dois problemas distintos são separados:

  • Enviado por Shopify Flow, mas vazio - a chave estava no seu JSON, mas o Shopify Flow não gerou nenhum valor. Normalmente, trata-se de um caminho de propriedade incorreto ou de um campo que está realmente vazio para esse registro (um checkout como convidado não possui o nome do cliente).
  • Isso não foi enviado por Shopify Flow de forma alguma - a chave está totalmente ausente do seu JSON.

Adicionar um fallback | default: indica que o espaço em branco é intencional, e o aplicativo deixa de exibir avisos a respeito.

Condicionais e loops

Utilize o bloco HTML/Código para expressões de condições:

{% if variables.isVip %}
  <p>As a VIP you get free shipping on this order.</p>
{% else %}
  <p>Spend a little more to unlock free shipping.</p>
{% endif %}

Utilize o bloco “Loop” para repetir os itens de linha de uma matriz, por exemplo, os itens de linha de uma nota fiscal:

{% for item in variables.items %}
  <tr>
    <td>{{ item.title }}</td>
    <td>{{ item.quantity }}</td>
    <td>{{ item.price }}</td>
  </tr>
{% endfor %}

Envie o array do Shopify Flow como JSON:

{
  "items": [
    { "title": "Classic White T-Shirt", "quantity": 2, "price": "29.00" },
    { "title": "Eco Water Bottle", "quantity": 1, "price": "19.00" }
  ]
}

Para visualizar um loop no construtor, insira o mesmo array JSON como valor na guia “Testar variáveis”.

Os objetos se comportam de maneira diferente no e-mail e no HTTP

Essa é a única aresta afiada que vale a pena conhecer.

  • Em uma solicitação HTTP, a interpolação de um objeto ou array o serializa automaticamente para JSON. {{ variables.records }} torna-se um array JSON válido no corpo da solicitação. Um filtro json também está disponível caso deseje ser explícito.
  • Em um e-mail, essa conversão não ocorre. Ao interpolar um objeto inteiro, o texto literal é renderizado como [object Object].

Portanto, em e-mails, sempre acesse o objeto em vez de imprimi-lo:

Wrong:  {{ variables.customer }}
Right:  {{ variables.customer.firstName }} {{ variables.customer.lastName }}

Ou utilize um loop para percorrer um array, em vez de exibi-lo por completo.

Segredos nos modelos

Faça referência a um segredo armazenado da mesma forma:

Authorization: Bearer {{ secrets.airtableAccessToken }}

Utilize a sintaxe exata {{ secrets.keyName }}. As seguintes opções não funcionam:

  • {{ secret.keyName }} - singular
  • {{ secrets['keyName'] }} - sintaxe de colchetes

Os nomes das chaves diferenciam maiúsculas de minúsculas. Consulte Segredos.

Substituição do corpo da mensagem para solicitações HTTP

O campo “variáveis” da ação HTTP possui um segundo modo. Ao passar uma chave body, ela substitui integralmente o corpo da solicitação salvo:

{
  "body": { "anything": "you like", "shaped": ["however"] }
}

Isso é útil quando a forma da carga útil é determinada por uma etapa anterior do Shopify Flow. A única exceção: se o próprio corpo salvo fizer referência a {{ variables.body }}, ele será tratado como uma variável comum.

Testando o que o(a) senhor(a) escreveu

A visualização na página não avalia o Liquid - ela exibe as tags exatamente como foram escritas. Para ver os valores resolvidos:

  • Para e-mails, utilize a opção “Enviar e-mail de teste” no editor de layout.
  • Para solicitações HTTP, utilize o botão “Testar”, que exibe a “URL resolvida” e o “Corpo resolvido” juntamente com a resposta.

Um layout cujo tipo de e-mail seja “Marketing” recebe mais duas variáveis. Cada destinatário de um e-mail de marketing possui seu próprio link para cancelar a inscrição, e essas variáveis o inserem:

  • {{ unsubscribe_link }} exibe um link com o texto “Cancelar inscrição” da seção “Configurações” (ou o próprio texto do layout).
  • {{ unsubscribe_url }} exibe o endereço puro, para um botão ou um link que o senhor mesmo define o estilo.
<p>No longer interested? <a href="{{ unsubscribe_url }}">Unsubscribe here</a>.</p>

Não é necessário utilizá-las: todo e-mail de marketing já tem um rodapé de cancelamento de inscrição anexado de qualquer maneira. Quando o corpo do e-mail já contém o link, o rodapé omite a frase de cancelamento de inscrição e anexa apenas os dados da empresa. No assunto e no texto de pré-visualização, ambas as variáveis não exibem nada, e em um layout transacional elas estão sempre vazias. Consulte E-mails de marketing e cancelamentos de inscrição.

Relacionado