Template do card
Substitua o card de produto pelo seu próprio HTML. Edita-se no painel (Aparência → Avançado → Template do card) com pré-visualização em direto, e admite variáveis, condicionais e iteração sobre as etiquetas do produto.
Exemplo
<a class="mi-card" href="{{url}}">
{{#if image}}<img src="{{image}}" alt="{{name}}" loading="lazy">{{/if}}
{{#if brand}}<span class="mi-marca">{{brand}}</span>{{/if}}
<h3>{{name}}</h3>
<p class="mi-precio">
{{price}}
{{#if on_sale}}<s>{{price_original}}</s> -{{sale_pct}} %{{/if}}
</p>
{{#each badges}}<span class="mi-badge">{{.}}</span>{{/each}}
</a> O botão «Adicionar ao carrinho» é injetado automaticamente depois do seu HTML se o tiver ativado — não é preciso incluí-lo no template. Os estilos do seu card vão no Custom CSS.
Variáveis
| Variável | Conteúdo |
|---|---|
| {{name}} | Nome do produto. |
| {{url}} | URL da página do produto. |
| {{image}} | URL da imagem principal. |
| {{brand}} | Marca. |
| {{category}} | Categoria principal. |
| {{price}} | Preço atual formatado. |
| {{price_original}} | Preço antes do desconto. ATENÇÃO: se o produto NÃO está em promoção traz o mesmo valor que {{price}}, não vem vazio — envolve-o em {{#if on_sale}} se não o quiseres repetido. |
| {{sale_pct}} | O NÚMERO do desconto, sem sinal e sem símbolo: «24», não «-24%». O formato escreve-lo tu: -{{sale_pct}} %. Vazio quando o produto não está em promoção. |
| {{currency}} | Símbolo/código da moeda. |
| {{reference}} | Referência interna (SKU). |
Uma variável sem valor para um produto é substituída por texto vazio — nunca quebra o render.
Condicionais e iteração
{{#if campo}}…{{/if}}
pinta o bloco só se o campo tiver valor. Campos disponíveis:
on_sale · available · image · brand · category · badges · sale_pct · name · url · price · price_original · currency · reference.
Sem aninhamento de condicionais. O mais útil de todos é
{{#if price}}:
num motor de busca sem preço para esse comprador (B2B sem tarifa de grupo, preço sob consulta), um
{{price}}
solto não mostra nada, mas a maquetação em volta sim — envolva-o e a card fica limpa.
{{#each badges}}{{.}}{{/each}}
itera as etiquetas do produto (promoção, esgotado, novidade…) conforme o configurado no painel.
Limites e segurança
- Até 20.000 caracteres.
- O modelo NÃO é sanitizado no servidor: o servidor só verifica o tamanho e guarda-o tal como está. A sanitização acontece no widget ao renderizar (e no preview do painel, com o mesmo código): remove
<script>,<style>,<iframe>, os atributoson*=com qualquer separador e todo atributo-URL cujo esquema não esteja na lista branca (http, https, mailto, tel, data:image e caminhos relativos), antes e depois de resolver as variáveis. Não é um sanitizer HTML completo: reveja o modelo como reveria código que vai correr na sua loja. O JS vai no seu editor e o CSS no seu. - Se a loja oculta os preços (catálogos B2B), as variáveis de preço são esvaziadas automaticamente.