Информационные блоки имеют возможность изменения, добавления типов отображения.
При помощи типов отображения Вы можете менять содержимое блоков, выводить разную информацию на разных витринах (страницах). При этом все настройки будут собраны в одном месте.
Рассмотрим, как работать с типами отображения на примере активных скидок.
В каждый блок поступает определенная информация. Эта информация содержится в переменных вида {$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) Результат отображения.
