Плагин формирует и отображает списки избранных товаров для категории. Функциональность плагина сходна со встроенными в Shopscript динамическими списками, однако выборка товаров для составления списка производится из категории, текущей или указанной, а не из всех товаров магазина.
Показ списка над основным перечнем товаров категории позволяет привлечь внимание покупателя к новинкам, самым популярным товарам, скидочным акциям по товарам, входящим в категорию, которую просматривает потенциальный покупатель.
Списки формируются без учета параметров сортировки и фильтрации в категории, если посетитель их установил.
Максимальное число товаров в списке указывается в настройках плагина. Не стоит без особой нужды указывать очень большое число, 6-12 товаров в каждом списке будет более, чем достаточно. Точное число товаров в результате может быть меньше, чем указано, если в категории нет подходящего количества товаров. Список может даже быть пустым.
Плагин формирует четыре вида списков:
Во встроенном шаблоне доступны три переменных, две из которых
wa_theme_url
и wa_theme_path
аналогичны переменным основных шаблонов тем приложений. С их помощью можно, например, подключать для отображения списков стандарный шаблон из темы дизайна, обычно list-thumbs.html
или list-thumbs-mini.html
. Это может помочь унифицировать внешний вид с остальной темой.
Также во встроенный шаблон передается переменная
lists
представляющая собой ассоциативный массив в качестве ключей которого выступают идентификаторы списков, а значения — массив товаров списка.
Допустимые ключи:
newest
, top_rated
, top_selling
и best_buys
array( 'newest' => array(/* массив товаров */), 'top_rated' => array(/* массив товаров */), 'top_selling' => array(/* массив товаров */), 'best_buys' => array(/* массив товаров */) );
Формат каждого списка аналогичен формату массива товаров в категории или списков товаров.
Встроенный шаблон выводится в месте, указанным хуком
frontend_category
. В настройках плагина можно указать дополнительно, чтобы шаблон выводился только на первой странице категории, если используется постраничная навигация. Также можно полностью отключить обработку хука.
Если необходимо вывести результат работы плагина с использованием встроенного шаблона в произвольном месте страницы категории, можно использовать метод
shopFeaprocatPlugin::render($category_id)
заменив $category_id
на ID категории (таки да, он может отличаться от текущей, но зачем?).
Пример вызова из шаблона
category.html
:
{shopFeaprocatPlugin::render($category.id)}
Можно просто получить данные в виде массива и не использовать встроенный шаблон и настройки плагина. Для этого необходимо вызвать метод
shopFeaprocatPlugin::getProducts($options)
, где $options
это массив с настройками. Формат массива настроек:
$options = array( 'category_id' => id_категории /* ID категории. Обязательный ключ */ 'list_types' => array( /* массив нужных списков. Идентификатор списка должен */ 'newest'=> 1, /* быть ключом массива, а значение должно быть */ ... /* больше 0 */ ), 'max_products' => 12, /* Максимально число товаров в списке, по умолчанию 12*/ 'days_new' => 30 /* Ограничение по "возрасту" новых товаров, укажите */ /* 0, чтобы отключить. По умолчанию 30 дней */ )
В «Удобной покупке» нет файлов list-thumbs.html
или list-thumbs-mini.html
. В качестве быстрого исправления можно использовать такой шаблон:
{$listnames = ['newest'=>'Новинки', 'top_rated'=>'Лучший рейтинг', 'top_selling'=>'Топ продаж', 'best_buys'=>'Распродажа']} {if !empty($lists)} <style> #s-plugin-feaprocat-tabs .ui-tabs-nav { list-style-type: none; padding: 0; margin: 0; line-height: normal; } #s-plugin-feaprocat-tabs .ui-tabs-panel { border-top: 1px solid #aaa; border-bottom: 1px solid #aaa; } #s-plugin-feaprocat-tabs .ui-tabs-nav li { display: inline; padding: 5px 10px 0; border: 1px solid #aaa; border-bottom: none; line-height: normal; } #s-plugin-feaprocat-tabs .ui-tabs-nav li.ui-state-active { padding-bottom: 1px; background-color: white; } #s-plugin-feaprocat-tabs .ui-tabs-nav li a { text-decoration: none; } #s-plugin-feaprocat-tabs .ui-tabs-hide { display: none; } </style> <div id="s-plugin-feaprocat-tabs"> {if count($lists) > 1} <ul> {foreach $lists as $list_id=>$list_content} {if $list_content} <li><a href="#s-plugin-feaprocat-tab-">{$listnames[$list_id]}</a></li> {/if} {/foreach} </ul> {/if} {foreach $lists as $list_id=>$list_content} {if $list_content} <div class="products-slider" id="s-plugin-feaprocat-tab-"> <div class="products-slider-name"><h2>{$listnames[$list_id]}</h2></div> {include file="`$wa_theme_path`/products.slider.html" sliderId={$list_id} s_products=$list_content} </div> {/if} {/foreach} </div> {if count($lists) > 1} <script type="text/javascript"> $(function () { $.getScript("/wa-content/js/jquery-ui/jquery.ui.widget.min.js", function () { $.getScript("/wa-content/js/jquery-ui/jquery.ui.tabs.min.js", function () { $("#s-plugin-feaprocat-tabs").tabs(); }); }); }); </script> {/if} {/if}