Вопросы-ответы

Как вывести список товаров на странице

В Seller 2.0 можно вывести список товаров на любой странице сайта, в записи блога или в пользовательском блоке. Вывод выполняет корневой шаблон products.html темы в приложении Shop — он подключается через функцию темы include_template.

Доступные режимы отображения

Параметр view_type может принимать следующие значения (каждому соответствует шаблон в html/products/ темы Shop):

ЗначениеОписание
gridСетка товаров (режим по умолчанию)
listСписок: карточки в один столбец
shortКомпактная сетка
swiperКарусель
swiper_shortКомпактная карусель
swiper_compareКарусель для сравнения товаров (используется на странице сравнения)
swiper_sliderСлайдер — один товар на слайд (используется в блоке слайдера)
tableТаблица; при включённой настройке массового добавления в корзину сверху выводится панель «Отметить все» / «В корзину»

Ограничение мобильной версии

На мобильных устройствах допустимы только режимы grid, swiper, swiper_compare и swiper_short. Любой другой view_type на мобильных принудительно заменяется на grid:

{$view_types_available_on_mobile = ["grid", "swiper", "swiper_compare", "swiper_short"]}
{$view_type = (empty($is_mobile) || $view_type|in_array:$view_types_available_on_mobile) ? $view_type : "grid"}

Пример вывода

В примере показан вывод товаров из списка «Украшения» (ukrasheniya) в количестве 4 штук каруселью:

{* UTILS *}
{include "{$wa->site->themePath(waRequest::getTheme())}u-utils.html"}

{* GET THEMESETTINGS *}
{$theme_id = waRequest::getTheme()}
{$theme_settings = $wa->themesettings->getThemeSettings($theme_id, "site", true)}

{$products = $wa->shop->productSet("ukrasheniya", 4, null, ['fields' => '*,skus_filtered'])}
{$products_props = [
    "view_type" => "swiper"
]}

{call include_template template="products" app="shop" products=$products props=$products_props}

Заголовок шаблон products.html не выводит — при необходимости добавьте его обычной разметкой перед вызовом.

Параметры

ПараметрТипОписание
view_typestringРежим отображения (см. таблицу выше). По умолчанию grid
grid_columnsnumber/stringВ режимах grid и short — число колонок на широких экранах (по умолчанию 4; grid понимает 3, 4, 5, short — 3, 5, 6, 7, любое другое значение даёт 4). В режимах swiper и swiper_short — число видимых слайдов на экранах от 1024 px (по умолчанию 5)

Поле skus_filtered

В опции fields тема везде использует поле skus_filtered — оно загружает все артикулы товара, прошедшие фильтрацию. Существует и поле sku_filtered, но оно возвращает только один артикул на товар; для корректной работы выбора артикулов в карточках используйте skus_filtered, как это делают штатные шаблоны темы.

Вывод внутри текстового контента

При выводе товаров внутри текста (описание товара, запись блога, страница с prose-стилями) оберните блок в класс not-prose, чтобы типографские стили не влияли на карточки товаров:

<div class="not-prose mb-6">
    {$products = $wa->shop->productSet("ukrasheniya", 4, null, ['fields' => '*,skus_filtered'])}
    {$products_props = [
        "view_type" => "grid"
    ]}

    {call include_template template="products" app="shop" products=$products props=$products_props}
</div>

Замените "ukrasheniya" на идентификатор вашего списка товаров.