Типы отображения

Информационные блоки имеют возможность изменения, добавления типов отображения.

При помощи типов отображения Вы можете менять содержимое блоков, выводить разную информацию на разных витринах (страницах). При этом все настройки будут собраны в одном месте.

Рассмотрим, как работать с типами отображения на примере активных скидок.

В каждый блок поступает определенная информация. Эта информация содержится в переменных вида {$workflow}. Для каждого блока описаны свои наборы переменных.

Перед нами код шаблона активных скидок:

{if $wa->shop && class_exists('shopFlexdiscountPlugin') && shopFlexdiscountPlugin::isEnabled()}
    
    {if !empty($fl_discounts)}
    
        {* НЕТ ТИПА ОТОБРАЖЕНИЯ *}
        
        {if empty(<b>$view_type</b>)}
        
            <div class="flexdiscount-discounts">
                <div class="flexdiscount-discounts-heading">
                    <div class="h3">Активные скидки</div>
                </div>
                <div class="flexdiscount-discounts-body flexdiscount-interactive">
                    <ul>
                        {foreach $fl_discounts as $fl_d}
                        <li>{if $fl_d.name}{$fl_d.name} - {/if}<span class="flexdiscount-discounts-price">{shop_currency($fl_d.discount, true)}</span>{if $fl_d.affiliate}, <span class="flexdiscount-discounts-affiliate">{$fl_d.affiliate}  {_wp('bonus', 'bonuses', $workflow.$fl_d.affiliate)}</span>{/if}</li>
                        {/foreach}
                    </ul>
                </div>
            </div>
            
        {* ТИП ОТОБРАЖЕНИЯ 1 *}
        
        {elseif <b>$view_type</b> == '1'}
        
         <div class="flexdiscount-discounts">
            <div class="flexdiscount-discounts-heading">
                <div class="h3">Ваши скидки</div>
            </div>
            <div class="flexdiscount-discounts-body flexdiscount-interactive">
                
                            {if shopAffiliate::isEnabled()}
                            
                            {/if}
                        
                        {foreach $fl_discounts as $fl_d}
                            
                                {if shopAffiliate::isEnabled()}
                                
                                {/if}
                            
                        {/foreach}
                    <table class="align-center">
                    <thead>
                        <tr>
                            <th>Название</th>
                            <th>Скидка</th><th>Бонусы</th></tr>
                    </thead>
                    <tbody><tr class="fl-discount-skus">
                                <td>{$fl_d.name|escape}</td>
                                <td>{if $fl_d.discount}{shop_currency($fl_d.discount, true)}{else}-{/if}</td><td>{if $fl_d.affiliate}{$fl_d.affiliate}{else}-{/if}</td></tr></tbody>
                </table>
            </div>
        </div>
        
        {* ТИП ОТОБРАЖЕНИЯ 2 *}
        
        {elseif <b>$view_type</b> == '2'}
        
            {* СОЗДАЙТЕ СВОЙ СОБСТВЕННЫЙ ТИП ОТОБРАЖЕНИЯ ПРЯМО ЗДЕСЬ  *}
            
        {* КОНЕЦ *}
        
        {/if}
    {/if}
{/if}


В коде сделаны подсказки в виде конструкций:

{* Подсказка *}    


Они позволяют понять, где начало и конец того или иного типа отображения.

В каждом блоке есть место, где Вы можете создать свой тип отображения. В данном случае Вам предлагается создать второй тип отображения, в котором будет использован Ваш HTML-код, CSS-стили и переменные.

Тип отображения содержится в переменной:

{$view_type}    


При помощи условий происходит проверка на принадлежность к типу отображения:

{if empty(<b>$view_type</b>)}
    ...
{elseif <b>$view_type</b> == '1'}
    ...
{elseif <b>$view_type</b> == '2'}
        ...
{elseif <b>$view_type</b> == '3'}
    ...
{/if}


При необходимости Вы можете создать третий, четвертый и последующие блоки.

Создав свой тип отображения, используйте его в ручном выводе или в настройках.

Согласно конструкции примененных скидок типы отображения в ручном выводе будут выглядеть так:

Нет типа отображения: {shopFlexdiscountPluginHelper::getUserDiscounts()} или {shopFlexdiscountPluginHelper::getUserDiscounts(0)} 
Первый тип отображения: {shopFlexdiscountPluginHelper::getUserDiscounts(1)} 
Второй тип отображения: {shopFlexdiscountPluginHelper::getUserDiscounts(2)}    


С остальными блоками аналогичная ситуация.

Пример создания нового типа отображения

Предположим, необходимо создать новый тип отображения в корзине, где будет только перечисление активных правил.

1) Используем для этого второй тип отображения. Сейчас он выглядит вот так:

{* ТИП ОТОБРАЖЕНИЯ 2 *}
    
    {elseif <b style="color: #f31583">$view_type</b> == '2'}
    
            {* СОЗДАЙТЕ СВОЙ СОБСТВЕННЫЙ ТИП ОТОБРАЖЕНИЯ ПРЯМО ЗДЕСЬ  *}    


После внесения изменений он будет выглядет следующим образом:

{* ТИП ОТОБРАЖЕНИЯ 2 *}
    
    {elseif <b>$view_type</b> == '2'}
    
        <div class="flexdiscount-discounts">
            <div class="flexdiscount-discounts-heading">
                <div class="h3">Список активных правил</div>
            </div>
            <div class="flexdiscount-discounts-body flexdiscount-interactive">
                <ul>
                    {foreach $fl_discounts as $fl_d}
                    <li>{if $fl_d.name}{$fl_d.name}{/if}</li>
                    {/foreach}
                </ul>
            </div>
        </div>


2) Укажем второй тип отображения в настройках Активных скидок и бонусов.

3) Результат отображения.