Информационные блоки имеют возможность изменения, добавления типов отображения.
При помощи типов отображения Вы можете менять содержимое блоков, выводить разную информацию на разных витринах (страницах). При этом все настройки будут собраны в одном месте.
Рассмотрим, как работать с типами отображения на примере активных скидок.
В каждый блок поступает определенная информация. Эта информация содержится в переменных вида {$workflow}
. Для каждого блока описаны свои наборы переменных.
Перед нами код шаблона активных скидок:
{if $wa->shop && class_exists('shopFlexdiscountPlugin') && shopFlexdiscountPlugin::isEnabled()} {if !empty($fl_discounts)} {* НЕТ ТИПА ОТОБРАЖЕНИЯ *} {if empty($view_type)} <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 $view_type == '1'} <div class='flexdiscount-discounts'> <div class="flexdiscount-discounts-heading"> <div class="h3">Ваши скидки</div> </div> <div class="flexdiscount-discounts-body flexdiscount-interactive"> <table class="align-center"> <thead> <tr> <th>Название</th> <th>Скидка</th> {if shopAffiliate::isEnabled()} <th>Бонусы</th> {/if} </tr> </thead> <tbody> {foreach $fl_discounts as $fl_d} <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> {if shopAffiliate::isEnabled()} <td>{if $fl_d.affiliate}{$fl_d.affiliate}{else}-{/if}</td> {/if} </tr> {/foreach} </tbody> </table> </div> </div> {* ТИП ОТОБРАЖЕНИЯ 2 *} {elseif $view_type == '2'} {* СОЗДАЙТЕ СВОЙ СОБСТВЕННЫЙ ТИП ОТОБРАЖЕНИЯ ПРЯМО ЗДЕСЬ *} {* КОНЕЦ *} {/if} {/if} {/if}
В коде сделаны подсказки в виде конструкций:
{* Подсказка *}
Они позволяют понять, где начало и конец того или иного типа отображения.
В каждом блоке есть место, где Вы можете создать свой тип отображения. В данном случае Вам предлагается создать второй тип отображения, в котором будет использован Ваш HTML-код, CSS-стили и переменные.
Тип отображения содержится в переменной:
{$view_type}
При помощи условий происходит проверка на принадлежность к типу отображения:
{if empty($view_type)} ... {elseif $view_type == '1'} ... {elseif $view_type == '2'} ... {elseif $view_type == '3'} ... {/if}
При необходимости Вы можете создать третий, четвертый и последующие блоки.
Создав свой тип отображения, используйте его в ручном выводе или в настройках.
Согласно конструкции примененных скидок типы отображения в ручном выводе будут выглядеть так:
Нет типа отображения: {shopFlexdiscountPluginHelper::getUserDiscounts()} или {shopFlexdiscountPluginHelper::getUserDiscounts(0)} Первый тип отображения: {shopFlexdiscountPluginHelper::getUserDiscounts(1)} Второй тип отображения: {shopFlexdiscountPluginHelper::getUserDiscounts(2)}
С остальными блоками аналогичная ситуация.
Пример создания нового типа отображения
Предположим, необходимо создать новый тип отображения в корзине, где будет только перечисление активных правил.
1) Используем для этого второй тип отображения. Сейчас он выглядит вот так:
{* ТИП ОТОБРАЖЕНИЯ 2 *} {elseif $view_type == '2'} {* СОЗДАЙТЕ СВОЙ СОБСТВЕННЫЙ ТИП ОТОБРАЖЕНИЯ ПРЯМО ЗДЕСЬ *}
После внесения изменений он будет выглядет следующим образом:
{* ТИП ОТОБРАЖЕНИЯ 2 *} {elseif $view_type == '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) Результат отображения.