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