home.tpl

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