Skip to content
ms3Variants
ms3Variants
Компонент вариантов товаров для MiniShop3
  1. Компоненты
  2. ms3Variants
  3. Сниппеты

Сниппеты

msProductVariants

Сниппет для вывода вариантов товара на странице товара.

Параметры

ПараметрПо умолчаниюОписание
productтекущий ресурсID товара
tplms3_variantsЧанк-обёртка для всех вариантов
tplRowms3_variants_rowЧанк для одного варианта
activeOnly1Только активные варианты (1/0)
sortbypositionПоле сортировки: position, price, sku, count
sortdirASCНаправление: ASC или DESC
includeJs1Подключить JavaScript (1/0)
includeCss1Подключить CSS (1/0)
outputSeparator\nРазделитель между вариантами
returnData0Вернуть данные массивом вместо HTML (1/0)

Базовый вызов

fenom
{'msProductVariants' | snippet}

С кастомными чанками

fenom
{'msProductVariants' | snippet : [
    'tpl' => 'my_variants_wrapper',
    'tplRow' => 'my_variant_item'
]}

Сортировка по цене

fenom
{'msProductVariants' | snippet : [
    'sortby' => 'price',
    'sortdir' => 'ASC'
]}

Для другого товара

fenom
{'msProductVariants' | snippet : [
    'product' => 42
]}

Получение данных в переменную

fenom
{set $variantsData = 'msProductVariants' | snippet : ['returnData' => 1]}

{if $variantsData.total > 0}
    <p>Доступно {$variantsData.total} вариантов</p>

    {foreach $variantsData.variants as $variant}
        <div>{$variant.sku}{$variant.price} ₽</div>
    {/foreach}
{/if}

Плейсхолдеры в tpl (обёртка)

ПлейсхолдерТипОписание
{$product_id}intID товара
{$rows}stringОтрендеренные строки вариантов
{$variants}arrayМассив вариантов для Fenom
{$available_options}arrayУникальные опции со значениями
{$total}intКоличество вариантов
{$options_json}stringJSON доступных опций
{$variants_json}stringJSON маппинга вариантов

Плейсхолдеры в tplRow (строка варианта)

ПлейсхолдерТипОписание
{$id}intID варианта
{$product_id}intID товара
{$sku}stringАртикул
{$price}floatЦена
{$old_price}floatСтарая цена
{$count}intОстатки
{$weight}floatВес
{$active}boolАктивность
{$position}intПозиция
{$in_stock}boolЕсть на складе
{$image_url}stringURL изображения
{$options}arrayМассив опций [{key, value}, ...]
{$options_string}stringОпции строкой: "Красный, XL"
{$options_array}arrayАссоциативный массив {color: 'red', size: 'XL'}
{$idx}intПорядковый номер

Интеграция с msProducts

Для вывода вариантов в каталоге используется стандартный сниппет msProducts с параметром usePackages.

Параметр usePackages

fenom
{'msProducts' | snippet : [
    'parents' => 0,
    'usePackages' => 'ms3Variants'
]}

При указании usePackages => 'ms3Variants' плагин загружает варианты для всех товаров одним запросом и добавляет данные в каждый товар.

Плейсхолдеры товара с вариантами

ПлейсхолдерТипОписание
{$has_variants}boolЕсть ли варианты у товара
{$variants_count}intКоличество вариантов
{$variants_json}stringJSON массив вариантов
{$variants}arrayМассив вариантов для Fenom

Пример вывода в каталоге

fenom
{'msProducts' | snippet : [
    'parents' => 0,
    'usePackages' => 'ms3Variants',
    'includeThumbs' => 'small,medium',
    'tpl' => 'ms3_products_row_variants'
]}

Структура варианта в массиве

php
[
    'id' => 1,
    'product_id' => 42,
    'sku' => 'ABC-123-red-XL',
    'price' => 1500.00,
    'old_price' => 2000.00,
    'count' => 10,
    'weight' => 0.5,
    'active' => true,
    'in_stock' => true,
    'image_url' => '/assets/images/products/42/product.jpg',
    'small' => '/assets/images/products/42/small/product.jpg',
    'medium' => '/assets/images/products/42/medium/product.jpg',
    'options_array' => [
        'color' => 'red',
        'size' => 'XL'
    ]
]

С эскизами изображений

Для загрузки эскизов вариантов передайте includeThumbs:

fenom
{'msProducts' | snippet : [
    'parents' => 0,
    'usePackages' => 'ms3Variants',
    'includeThumbs' => 'small,medium'
]}

В массиве варианта появятся поля small, medium и т.д. с URL эскизов.