Особые товары категорий

Особые товары категории - плагин для Shopscript 5

Цена
629
Ссылка
Особые товары категории
Опубликованная версия
1.0.0

Описание и настройки

Плагин формирует и отображает списки избранных товаров для категории. Функциональность плагина сходна со встроенными в 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

Встроенный шаблон выводится в месте, указанным хуком 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}