Home Slider

Após montar a ordem das seções na Home, o arquivo snipplets/home/home-section-switch.tpl decide qual subtemplate carregar conforme section_select.

Switch de seções (home-section-switch.tpl)

Quando section_select == 'slider', incluímos o slider para desktop e opcionalmente o de mobile:

{% include 'snipplets/home/home-slider.tpl' %}
{% if has_mobile_slider %}
  {% include 'snipplets/home/home-slider.tpl' with { mobile: true } %}
{% endif %}

Trabalhando com GALLERY do settings

O tipo GALLERY do settings permite iterar sobre imagens e metadados configurados pelo lojista. Podemos alternar entre desktop e mobile com uma variável mobile enviada via with.

Classes condicionais para desktop/mobile

Controle visibilidade e classes dinamicamente no atributo class:

<div class="{% if mobile %}js-home-mobile-slider{% else %}js-home-main-slider{% endif %}-visibility 
           {% if has_main_slider and has_mobile_slider %}
             {% if mobile %}d-md-none{% else %}d-none d-md-block{% endif %}
           {% elseif not settings.toggle_slider_mobile and mobile %}
             hidden
           {% endif %}">
  ...
</div>

Abertura e fechamento condicionais

Se slider_full estiver desativado, abrimos um container antes do conteúdo e fechamos após ele. Repita a mesma condição para o fechamento.

{% if not settings.slider_full %}
  <div class="js-home-slider-container container">
{% endif %}
  ... conteúdo do slider ...
{% if not settings.slider_full %}
  </div>
{% endif %}

Unificando dados do slider

Escolha o array correto (desktop ou mobile) e itere apenas uma vez:

{% if mobile %}
  {% set slider = settings.slider_mobile %}
{% else %}
  {% set slider = settings.slider %}
{% endif %}

{% for slide in slider %}
  {# conteúdo do slide #}
{% endfor %}
Equivalente em JavaScript
let slider;
if (mobile) {
  slider = settings.slider_mobile;
} else {
  slider = settings.slider;
}
for (const slide of slider) {
  // render
}

Índice no loop (loop.index / loop.index0)

Controle manual do índice ou use as variáveis do objeto loop:

{# Manual #}
{% set index = 0 %}
{% for item in lista %}
  {{ index }} - {{ item }}
  {% set index = index + 1 %}
{% endfor %}

{# Automático #}
{% for item in lista %}
  {{ loop.index0 }} - {{ item }} {# começa em 0 #}
  {{ loop.index }} - {{ item }}  {# começa em 1 #}
{% endfor %}

Atributos do item da galeria (slide)

slide.image → URL da imagem.
Com filtros | static_url | settings_image_url('large') gera a URL exata. Veja métodos suportados em docs.

slide.link → Texto/link configurado.
Use com {{ "{{ slide.link | setting_url }}" }}.

slide.title → Título;

slide.description → Descrição;

slide.button → Texto do botão;

slide.color → Opção de cor.

Reaproveitando campos (ex.: carrossel de avaliações)

Os campos da GALLERY são flexíveis e podem ser reutilizados para outros cenários:

slide.imagem     → foto de quem avaliou
slide.title      → nome de quem avaliou
slide.description→ texto da avaliação
slide.button     → data da avaliação

i18n no Twig (translate)

Traduza rótulos usando o filtro translate:

<a href="{{ slide.link | setting_url }}" aria-label="{{ 'Carrusel' | translate }} {{ loop.index }}">...</a>

O filtro busca a chave em translations.txt e retorna o valor no idioma atual; caso não exista, exibe o texto original.