Skip to content
ms3Variants
ms3Variants
Компонент вариантов товаров для MiniShop3
  • MODX 3
  • PHP 8.1
  • miniShop3
  • Vue 3
  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 эскизов.