Sistema de temas

Variáveis

Todos os dados da loja disponíveis nos templates.

Estas variáveis existem em todos os templates, exceto product, que só existe na rota de produto.

Variável Conteúdo
store Dados públicos da loja
user Visitante logado
social Links das redes sociais
options Opções que afetam a página
dates Data e hora atuais
route Caminho e parâmetros da rota
catalog Categorias, produtos e variantes
product Produto completo, só em /product/:id

store#

Campo Conteúdo
store.name Nome da loja
store.description Descrição
store.icon Logo, ou vazio
store.banner Banner, ou vazio

user#

Campo Conteúdo
user.name Nome do cliente logado. Sem nome no cadastro, usa o início do e-mail. Para visitante, nil.
user.email E-mail do cliente logado. Para visitante, nil.

É assim que se detecta login:

Liquid
{% if user.name %}
  <a href="/account">Olá, {{ user.name | split: " " | first }}</a>
{% else %}
  <a href="/login">Entrar</a>
{% endif %}

social#

social.facebook, social.instagram, social.twitter, social.youtube, social.whatsapp, social.telegram e social.discord. Cada um é nil quando não foi preenchido.

options#

Campo Conteúdo
options.store_status true com a loja aberta. Falso com Status da Loja desligado.
options.force_auth true se a compra exige login. É aplicado no pedido, não na navegação: serve para avisar o visitante.
options.feedback_status true se as avaliações estão ligadas.

dates#

Valores no horário de Brasília, calculados no momento do render.

Campo Exemplo
dates.date A data e hora completas
dates.year 2026
dates.month 10
dates.day 31
dates.time.hours 15
dates.time.minutes 4
dates.time.seconds 5
Liquid
© {{ dates.year }} {{ store.name }}

{% if dates.time.hours < 12 %}Bom dia{% else %}Boa tarde{% endif %}

route#

Campo Conteúdo
route.path Caminho da página, como /category/cursos
route.params Parâmetros da rota. Em /category/:id, use route.params.id.

catalog#

Campo Conteúdo
catalog.categories Categorias sem subcategorias, ou seja, as que têm produtos diretamente
catalog.categories_all Todas as categorias, com sub_categories
catalog.products Produtos públicos
catalog.variants Todas as variantes dos produtos públicos

Itens privados, inativos e de categoria privada ficam de fora. Produto com ocultar quando esgotado também sai quando o estoque zera. O catálogo traz até 2000 produtos, e os demais continuam abrindo pela própria página.

Categoria#

Campo Conteúdo
id, name, slug Identificação
sub_title Subtítulo
icon, banner Imagens, ou vazio
position Ordem
parent_category ID da categoria pai, ou nil
createdAt Data de criação
products Produtos da categoria
sub_categories Só em categories_all: as subcategorias

Produto em catalog#

Campo Conteúdo
id, name, slug Identificação
highlight Produto em destaque
images Lista de URLs
price Preço
comparison Preço de comparação, ou nil
quantity.min, quantity.max Quantidade por compra. Sem limite, max é 100000.
stock_amount Estoque. Sem limite, é 999999.
type series para linhas, texto para texto
category_id ID da categoria, ou vazio
position Ordem entre os destaques, ou nil
automatic Entrega automática
createdAt Data de criação
tags Lista com id, name, color e icon
variants Variantes do produto
variants_values.min, variants_values.max Variante mais barata e mais cara, ou nil

Variante#

id, name, price, comparison, quantity, stock_amount, icon, images, type, category_id, position, automatic, createdAt e tags, com o mesmo sentido do produto.

Card de produto#

Liquid
{% assign url = product.slug | default: product.id %}
<a href="/product/{{ url }}">
  {% if product.images.size > 0 %}
    <img src="{{ product.images[0] }}" alt="{{ product.name }}" loading="lazy">
  {% endif %}
  <h3>{{ product.name }}</h3>
  {% if product.variants.size > 0 %}
    <small>A partir de</small> {{ product.variants_values.min.price | money }}
  {% else %}
    {% if product.comparison %}<s>{{ product.comparison | money }}</s>{% endif %}
    {{ product.price | money }}
  {% endif %}
</a>

product#

Disponível só nas rotas de produto, como /product/:id e /product/:id/:variant. O id da rota aceita o ID ou o slug do produto.

Campo Conteúdo
id, name, slug Identificação
price, comparison Preço e preço de comparação
quantity.min, quantity.max Quantidade por compra
stock_amount Estoque. Sem limite, é 999999.
sold Quantidade vendida. É 0 com ocultar vendidos ligado.
hideSold Ocultar vendidos
description HTML da descrição. Use com | raw.
instructions Instruções. Use com | raw.
type variante, series ou texto
category_id ID da categoria, ou vazio
embed_video Link do vídeo, ou nil
images Lista de URLs
tags Lista com id, name, color e icon
automatic Entrega automática
variants Variantes, com description e sold além dos campos acima
fields Campos extras pedidos antes da compra
feedback Avaliações do produto

Campos extras#

Cada item de product.fields traz id, name, description, type (texto ou numero), required, character_limit.min, character_limit.max, ref_product, ref_variant e ref_category.

Avaliações#

Campo Conteúdo
feedback.stats.total Total de avaliações aprovadas
feedback.stats.average Média, com uma casa
feedback.stats.stars Quantidade por nota, de 1 a 5
feedback.reviews Até 50 avaliações aprovadas, das mais novas para as mais antigas

Cada avaliação traz id, comment, star, tags, images, is_anonymous, response_staff e createdAt.

Liquid
{% if options.feedback_status and product.feedback.stats.total > 0 %}
  <p>{{ product.feedback.stats.average }} de 5 ({{ product.feedback.stats.total }} avaliações)</p>
  {% for review in product.feedback.reviews limit: 5 %}
    <blockquote>{{ review.comment }}</blockquote>
  {% endfor %}
{% endif %}