Skip to content
MiniShop3
MiniShop3
Современный компонент интернет-магазина для MODX 3
  1. Компоненты
  2. MiniShop3
  3. Сниппеты
  4. msOptions

msOptions

Простой сниппет для вывода конкретных опций товара. Когда заранее известно, какие опции нужны — используйте этот сниппет для максимальной производительности.

Параметры

ПараметрПо умолчаниюОписание
productтекущий ресурсID товара
optionsСписок опций через запятую
tpltpl.msOptionsЧанк оформления
sortOptionValuesСортировка значений опций (см. ниже)

Deprecated параметры

Обратная совместимость

Следующие параметры устарели и будут удалены в будущих версиях:

  • &input → используйте &product
  • &name → используйте &options

Примеры

Вывод цвета и размера текущего товара

fenom
{'msOptions' | snippet : [
    'options' => 'color,size'
]}

Для конкретного товара

fenom
{'msOptions' | snippet : [
    'product' => 123,
    'options' => 'color,size,material'
]}

Некэшируемый вызов

fenom
{'!msOptions' | snippet : [
    'options' => 'color,size'
]}

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

fenom
{'msOptions' | snippet : [
    'options' => 'color,size',
    'tpl' => 'myOptionsChunk'
]}

С сортировкой значений

fenom
{'msOptions' | snippet : [
    'options' => 'color,size',
    'sortOptionValues' => 'size:SORT_ASC:SORT_STRING:M'
]}

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

Параметр sortOptionValues позволяет сортировать значения внутри каждой опции.

Формат

имя_опции:направление:тип:первое_значение
ЧастьОписаниеВозможные значения
имя_опцииКлюч опции для сортировкиcolor, size и т.д.
направлениеНаправление сортировкиSORT_ASC, SORT_DESC
типТип сортировкиSORT_STRING, SORT_NUMERIC, SORT_NATURAL
первое_значениеЗначение, которое поставить первым (опционально)Любое значение из списка

Примеры сортировки

fenom
{* Размеры по алфавиту *}
'sortOptionValues' => 'size:SORT_ASC:SORT_STRING'

{* Размеры по алфавиту, но M первым *}
'sortOptionValues' => 'size:SORT_ASC:SORT_STRING:M'

{* Несколько опций *}
'sortOptionValues' => 'size:SORT_ASC:SORT_STRING, color:SORT_DESC:SORT_STRING'

Плейсхолдеры в чанке

ПлейсхолдерОписание
{$id}ID товара
{$options}Массив опций с их значениями

Структура данных

Возвращает массив значений опций без метаданных:

php
[
    'color' => ['Красный', 'Синий'],
    'size' => ['S', 'M', 'L']
]

Чанк по умолчанию

Стандартный чанк tpl.msOptions выводит опции как select-элементы:

fenom
{* tpl.msOptions *}
{foreach $options as $name => $values}
    <div class="form-group row align-items-center mb-4">
        <label class="col-6 col-md-3 text-right text-md-left col-form-label"
               for="option_{$name}">
            {('ms3_product_' ~ $name) | lexicon}:
        </label>
        <div class="col-6 col-md-9">
            <select name="options[{$name}]" class="form-select col-md-6" id="option_{$name}">
                {foreach $values as $value}
                    <option value="{$value}">{$value}</option>
                {/foreach}
            </select>
        </div>
    </div>
{/foreach}

Альтернативный чанк

Пример простого вывода списком:

fenom
{* tpl.myOptions *}
{if $options?}
    <div class="product-options">
        {foreach $options as $key => $values}
            <div class="option">
                <strong>{$key}:</strong>
                {if $values is iterable}
                    {$values | join : ', '}
                {else}
                    {$values}
                {/if}
            </div>
        {/foreach}
    </div>
{/if}

Когда использовать

ПодходитНе подходит
Нужны только конкретные опцииНужны ВСЕ опции товара
Не требуются метаданныеТребуется фильтрация по группам
Нужна максимальная производительностьНужны названия, категории опций

Сравнение с msProductOptions

КритерийmsOptionsmsProductOptions
СкоростьБыстрееМедленнее
ФильтрацияТолько список опцийГруппы, опции, сортировка
МетаданныеНетПолные (category, type)
ГибкостьПростойПродвинутый
Use caseФиксированный списокДинамический список

Если нужны метаданные опций (категории, типы, описания) — используйте msProductOptions.