Skip to content

Programando com Liquid ​

Liquid é a linguagem de templates que combina seu HTML com dados da loja. A LojaVirtual usa LiquidJS com filtros e contratos próprios. Objetos de outras plataformas não ficam disponíveis automaticamente aqui.

Exibir valores e aplicar filtros ​

{{ ... }} escreve um valor; | aplica um filtro. Estes exemplos usam objetos disponíveis na referência:

liquid
<h1>{{ shop.name }}</h1>
<span>{{ product.price | money }}</span>

Use a expressão de preço somente quando product existir naquele contexto e o preço estiver disponível. O engine escapa a saída HTML por padrão. Não aplique raw a textos arbitrários de produtos, nomes ou dados enviados por visitantes.

Condições e valores ausentes ​

{% ... %} executa uma instrução. Não assuma que todos os produtos possuem imagem ou preço público:

liquid
{% if product.priceVisible and product.price %}
  <span>{{ product.price | money }}</span>
{% else %}
  <span>Consulte as condições deste produto</span>
{% endif %}

Em Liquid, uma string vazia ou um array vazio não deve ser tratado como false. Para listas, verifique size ou use o ramo else do for.

Repetição e componentes ​

liquid
{% for product in page.products %}
  {% render 'product_card', product: product %}
{% else %}
  <p>Nenhum produto disponível.</p>
{% endfor %}

Esse exemplo é para a Home e exige components/product_card.liquid. Para vitrines declaradas em dataSources, os itens ficam em section.data.products.items. Para categoria e busca, consulte listing.

Variáveis locais ​

Para selecionar produtos antes da paginação, use a tag query_products conforme o exemplo de consulta pelo Liquid. Um if dentro do loop apenas esconde o card já consultado: não recalcula totais nem completa a página. dataSources continua disponível para declarar vitrines pelo template JSON.

liquid
{% assign titulo = 'Conheça nossos produtos' %}
<h2>{{ titulo }}</h2>

Variáveis locais organizam a apresentação. Preços, descontos, estoque e autorização continuam sendo calculados pela plataforma.

Na página de cadastro, o tema pode omitir campos como telefone e sexo. O servidor aceita sua ausência mesmo quando eles aparecem como habilitados no painel; campos que o formulário enviar continuam sujeitos à validação. Consulte o contrato da conta do comprador.

HTML editorial ​

Alguns campos têm uma flag que informa que o HTML já foi sanitizado, como product.descriptionIsHtml e page.contentIsHtml. Só nesses contratos use a saída sem escape para o campo correspondente. Veja Produto e página institucional.

SEO cadastrado no painel ​

A descrição e as palavras-chave cadastradas no painel chegam em shop.seo. O renderer monta as tags no HTML inicial e aplica a precedência da página em page.seo, inclusive em temas que ainda não incluíam essas tags. Não é necessário inserir scripts nem duplicar o cadastro nos arquivos do tema.

Veja o contrato de SEO no HTML para canonical, Open Graph, Twitter Cards e páginas que não devem ser indexadas.

Próximos passos ​

Consulte os filtros da LojaVirtual e o exemplo executável de vitrine. Para sintaxe adicional, use a documentação do LiquidJS; a disponibilidade na LojaVirtual depende também da validação e da política de execução do tema.

Temas V3 · Liquid estrutura, CSS desenha, JSON compõe.