O home.tpl determina o conteúdo específico da página inicial da loja.
Começamos por incluir o carrossel de imagens, de forma fixa, portanto, se a pessoa que gerencia a loja decidir usá-lo, ele aparecerá primeiro.
Com o tema Base, incorporamos a ordem editável dos componentes na página inicial. Portanto, cada componente é desenvolvido em um snipplet diferente e a partir desse arquivo, geramos o loop para detectar a posição determinada na seção de personalização do layout no Administrador Nuvem.
Primeiro criamos um array vazio, que então pegará a ordem correta dos componentes
{% set newArray = [] %}Então nós abrimos o loop com as 7 posições disponíveis, determinadas no arquivo de configuração, settings.txt
{% for section in ['home_order_position_1', 'home_order_position_2', 'home_order_position_3', 'home_order_position_4', 'home_order_position_5', 'home_order_position_6', 'home_order_position_7'] %}Criamos um conjunto que registra os componentes a serem usados, uma condição que chama todos os snipplets dos componentes possíveis e um conjunto que grava os componentes que estão sendo usados:
{% set section_select = attribute(settings,"#{section}") %}
{% if section_select == 'products' %}
{# **** Featured products **** #}
{% include 'snipplets/home/home-featured-products.tpl' %}
{% elseif section_select == 'informatives' %}
{# **** Informative banners **** #}
{% include 'snipplets/banner-services/banner-services.tpl' %}
{% elseif section_select == 'categories' %}
{# **** Categories banners **** #}
{% include 'snipplets/home/home-banners.tpl' with {'textoverimage': true} %}
{% elseif section_select == 'welcome' %}
{# **** Welcome message **** #}
{% include 'snipplets/home/home-welcome-message.tpl' %}
{% elseif section_select == 'video' %}
{# **** Video embed **** #}
{% include 'snipplets/home/home-video.tpl' %}
{% elseif section_select == 'instafeed' %}
{# **** Instafeed **** #}
{% include 'snipplets/home/home-instafeed.tpl' %}
{% elseif section_select == 'modules' %}
{# **** Modules banners **** #}
{% include 'snipplets/home/home-modules.tpl' with {'textoverimage': false} %}
{% endif %}
{% set newArray = newArray|merge([section_select]) %}Este último código é incluído em um condicional, verificando se o componente não é repetido dentro do array.
{% if section_select not in newArray %}{% endif %}O código final é o seguinte:
{# **** Home slider **** #}
{% include 'snipplets/home/home-slider.tpl' %}
{# **** Features Order **** #}
{% set newArray = [] %}
{% for section in ['home_order_position_1', 'home_order_position_2', 'home_order_position_3', 'home_order_position_4', 'home_order_position_5', 'home_order_position_6', 'home_order_position_7'] %}
{% set section_select = attribute(settings,"#{section}") %}
{% if section_select not in newArray %}
{% if section_select == 'products' %}
{# **** Featured products **** #}
{% include 'snipplets/home/home-featured-products.tpl' %}
{% elseif section_select == 'informatives' %}
{# **** Informative banners **** #}
{% include 'snipplets/banner-services/banner-services.tpl' %}
{% elseif section_select == 'categories' %}
{# **** Categories banners **** #}
{% include 'snipplets/home/home-banners.tpl' with {'textoverimage': true} %}
{% elseif section_select == 'welcome' %}
{# **** Welcome message **** #}
{% include 'snipplets/home/home-welcome-message.tpl' %}
{% elseif section_select == 'video' %}
{# **** Video embed **** #}
{% include 'snipplets/home/home-video.tpl' %}
{% elseif section_select == 'instafeed' %}
{# **** Instafeed **** #}
{% include 'snipplets/home/home-instafeed.tpl' %}
{% elseif section_select == 'modules' %}
{# **** Modules banners **** #}
{% include 'snipplets/home/home-modules.tpl' with {'textoverimage': false} %}
{% endif %}
{% set newArray = newArray|merge([section_select]) %}
{% endif %}
{% endfor %}
Variables em home.tpl
has_products → true se a loja tem produtos (incluindo os escondidos). false caso contrário