No sections.txt
você cria coleções (até 40 produtos por coleção) que o lojista organiza no painel e você exibe onde for melhor (home, vitrine, banners, etc.).

Estrutura do arquivo
Segue a hierarquia semelhante ao settings.txt
, porém mais simples. Para cada coleção:
- Nível principal: chave da coleção (usada no Twig).
- Nível interno:
name
edescription
para exibição no painel.
Exemplo
Produtos em destaque
name = home_featured
description = Coleção da Home para produtos em destaque
Ofertas da semana
name = home_offers
description = Produtos com descontos especiais
Onde aparecem no painel
- Na edição do produto, em Destacar produto → escolher sessões.
- Na listagem de produtos, via botão Organizar para adicionar vários de uma vez.


Integração com settings (opcional)
É comum expor no settings.txt
um dropdown para o lojista escolher qual coleção exibir em uma área do tema (ex.: vitrine da Home):
dropdown
name = home_section_to_show
description = Qual coleção será exibida na Home?
values
home_featured = Produtos em destaque
home_offers = Ofertas da semana
Depois, no template, você pode incluir um snipplet passando a chave selecionada:
{% include 'snipplets/home/collection-grid.tpl' with { section_key: settings.home_section_to_show } %}
Observação
A forma de buscar e renderizar produtos da coleção varia por tema. Use o snipplet/padrão do tema para listar produtos a partir da
section_key
.
Boas práticas
- Defina nomes de chaves descritivos e estáveis (ex.:
home_featured
). - Use descrições claras para orientar o lojista no painel.
- Evite duplicar coleções com o mesmo propósito.
- Documente no tema onde cada coleção é usada.
Como o tema monta vitrines múltiplas
No componente snipplets/home/home-featured-products.tpl
criamos as vitrines da Home reaproveitando o mesmo snipplet para várias coleções.

Podemos ter cinco vitrines diferentes utilizando o mesmo componente, apenas mudando a coleção informada via with
:

{# no home-section-switch.tpl #}
{% include 'snipplets/home/home-featured-products.tpl' with { has_featured: true } %}
{% include 'snipplets/home/home-featured-products.tpl' with { has_secondary: true } %}
{% include 'snipplets/home/home-featured-products.tpl' with { has_tertiary: true } %}
{% include 'snipplets/home/home-featured-products.tpl' with { has_quaternary: true } %}
{% include 'snipplets/home/home-featured-products.tpl' with { has_quinary: true } %}
Dentro do home-featured-products.tpl
normalizamos as flags e buscamos os produtos:
{# garante false se não vier no with e verifica se há produtos #}
{% set has_featured = has_featured | default(false) and sections.primary.products %}
{% set has_secondary = has_secondary | default(false) and sections.secondary.products %}
{% set has_tertiary = has_tertiary | default(false) and sections.tertiary.products %}
{% set has_quaternary = has_quaternary | default(false) and sections.quaternary.products %}
{% set has_quinary = has_quinary | default(false) and sections.quinary.products %}
{% if has_featured %}
{% set products = sections.primary.products | slice(0, 8) %}
{% include 'snipplets/home/collection-grid.tpl' with { products: products } %}
{% endif %}
{% if has_secondary %}
{% set products = sections.secondary.products | slice(0, 8) %}
{% include 'snipplets/home/collection-grid.tpl' with { products: products } %}
{% endif %}
Selecionando coleção dinamicamente
Quando a coleção vem de um dropdown
no settings
, recupere a chave dinamicamente com attribute
:
{% set key = settings.home_section_to_show | default('home_featured') %}
{% set products = attribute(sections, key).products %}
{% if products is not empty %}
{% for product in products | slice(0, 12) %}
{% include 'snipplets/product-card.tpl' with { product: product } %}
{% endfor %}
{% else %}
{% if show_help or show_component_help %}
{% include 'snipplets/svg/empty-placeholders.tpl' %}
{% endif %}
{% endif %}
Limite, offset e paginação simples
Controle a quantidade de itens e implemente uma paginação básica com
slice
:
{# primeiros 8 itens #}
{% set first_page = sections.primary.products | slice(0, 8) %}
{# próxima página (offset 8, tamanho 8) #}
{% set second_page = sections.primary.products | slice(8, 8) %}
Exibindo produtos de uma coleção
Use o snipplet de cartão do tema e itere sobre os produtos da coleção:
{% for product in sections.primary.products | slice(0, 4) %}
{% include 'snipplets/product-card.tpl' with { product: product } %}
{% endfor %}
Atributos úteis
Consulte os métodos e atributos suportados em
docs. Em geral, product.name
e demais atributos básicos estão disponíveis nos snipplets do tema.