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.