Sections

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 e description 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

  1. Na edição do produto, em Destacar produto → escolher sessões.
  2. 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.