[msOptionsPrice2] - Связанные опции модификаций
[msOptionsPrice2] — В новой версии добавлен функционал связанных опций.
Довольно часто встает вопрос о отображении тех или иных опций в зависимости от другой(их), теперь данный функционал есть из коробки.

под катом подробности
Данный функционал реализует сниппет msOptionsPrice.option, он аналогичен сниппету msOptions и служит для вывода опций модификаций продукта.
Добавлен параметр constraintOptions — служит для задания ограничений опций, указывается в формате json, либо сразу в виде массива.
Пример вызова
В данном случае мы указываем что:
— опция phytomodule_color зависит от опции sizes
— опция equipment зависит от опции sizes и phytomodule_color
— опция frame_color зависит от опции sizes и phytomodule_color и equipment
Пример чанка опций
data-constraints — задаем ограничения опции
data-relations — задаем связи опций
input-parent — класс, необходим для скрытия/ отображения контейнера с опцией
аналогично задается и вывод селектами
ps. Всем спасибо за внимание, компонент уже в репозитории modstore.pro/packages/ecommerce/msoptionsprice2
Довольно часто встает вопрос о отображении тех или иных опций в зависимости от другой(их), теперь данный функционал есть из коробки.

под катом подробности
Данный функционал реализует сниппет msOptionsPrice.option, он аналогичен сниппету msOptions и служит для вывода опций модификаций продукта.
Добавлен параметр constraintOptions — служит для задания ограничений опций, указывается в формате json, либо сразу в виде массива.
Пример вызова
{'msOptionsPrice.option' | snippet : [
'options' => 'phytomodule_color,equipment,frame_color',
'tpl' => 'phytomodule.option',
'processColors' => 1,
'constraintOptions' => [
'phytomodule_color' => ['sizes'],
'equipment' => ['sizes','phytomodule_color'],
'frame_color' => ['sizes','phytomodule_color','equipment']
]
]}В данном случае мы указываем что:
— опция phytomodule_color зависит от опции sizes
— опция equipment зависит от опции sizes и phytomodule_color
— опция frame_color зависит от опции sizes и phytomodule_color и equipment
Пример чанка опций
{foreach $options as $name => $values}
<div class="sm-text"><b>{('ms2_product_' ~ $name) | lexicon}</b></div>
<div
{if $constraints[$name]}
data-constraints="{$constraints[$name]| json_encode: 256 | htmlentities}"
{/if}
>
{foreach $values as $value index=$index}
<label class="input-parent">
<input type="radio" value="{$values[$index]}" name="options[{$name}]"
{if $index == 0}checked="checked"{/if}
{if $constraints[$name]}
data-relations="{$relations[$name][$value]| json_encode: 256 | htmlentities}"
{/if}
/>
{$values[$index]}
</label>
{/foreach}
</div>
{/foreach}data-constraints — задаем ограничения опции
data-relations — задаем связи опций
input-parent — класс, необходим для скрытия/ отображения контейнера с опцией
аналогично задается и вывод селектами
{foreach $options as $name => $values}
<div class="form-group">
<label class="col-md-2 control-label" for="option_{$name}">{('ms2_product_' ~ $name) | lexicon}:</label>
<div class="col-md-10">
<select name="options[{$name}]" class="input-sm form-control" id="option_{$name}"
{if $constraints[$name]}
data-constraints="{$constraints[$name]| json_encode: 256 | htmlentities}"
{/if}
>
{foreach $values as $value index=$index }
<option value="{$value}"
{if $constraints[$name]}
data-relations="{$relations[$name][$value]| json_encode: 256 | htmlentities}"
{/if}
>{$value}</option>
{/foreach}
</select>
</div>
</div>
{/foreach}пример s6200.h3.modhost.pro/6/12010.htmlps. Всем спасибо за внимание, компонент уже в репозитории modstore.pro/packages/ecommerce/msoptionsprice2
Комментарии: 30
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Например, чтобы sizes зависел от phytomodule_color.
Может человек захочет подобрать стакан под цвет туфель, а размер его мало волнует.
главное указать у опции связь/зависимость.
вы спросили про порядок —
про него я вам и ответил.
теперь вы спрашиваете это уже иная ситуация. И честно говоря не тестировал такое…
Пакет доступен для теста на modhost.pro/
создавайте тестовый сайт, моделируйте нужную вам ситуацию и уже по факту задавайте вопросы.
У меня не семь пядей во лбу чтоб все ситуации предугадать…
Спасибо!
У меня сразу был вопрос именно про одновременное указание нескольких зависимостей, в разных направлениях.
Возник другой вопрос: Как изменить порядок значений опций?
В свойствах товара порядок, как надо:
а при выводе все значения опций выстраиваются в алфавитном порядке:
Сергей2. Как храниться все это дело в БД? Смогу ли я выгрузить в 1С остатки адекватно, т.е. товар с определенной опцией как отдельный товар?
модификации в виде отдельной таблицы, это не товар
СергейСо связанными опциями никак не разберусь…
Завис уже тут — куда этот пример вызова поставить?
Я так понял, этот пример показан в связке с дополнением msOptionsColor и с нестандартными опциями?
Тоже немного запутали незнакомые обозначения)
сниппет msOptionsPrice.option служит для вывода опций модификаций.
Поставить туда где необходим вывод опций.
да, но он так же работает и с обычными опциями товара, такими как size и color.
Если что то не получается и есть вопросы по функционалу — пишите пожалуйста в ТП дополнения.
Спасибо!
Т.е. вывести фильтр mFilter2 с картинками модификаций?
заполняем артикул у модификации именем файла по типу (white_color).
вызываем mfilter2 с параметрами:
картинки с цветом кладем в указанную папку (/img/colors/white_color.jpg)
в словарях создаем запись mse2_filter_colors_white_color = Белый цвет.
В итоге получаем фильтрацию по цветам всех модификаций с картинкой и русским названием фильтра).
Если кто-то подскажет как вывести все уникальные значения этого поля буду признателен. Код ниже выводит без уникальности все подряд, как его поправить?
у меня вот так:
Артем, а можете еще подсказать, как адекватно вывести название опции?
{('ms2_product_' ~ $name) | lexicon} выводит «ms2_product_size» вместо «Размер». Такой вопрос я уже находила тут, ответ на него дали, что нужно подгрузить лексиконы в чанке корзины
Но я не очень сильна во всем этом и не поняла, как же это сделать… А может быть есть и более простое решение?
вот это нужно вставить в тот же чанк, где у вас не работают лексиконы, в самое начало
код tpl.msOptionsPrice.unify
Спасибо Вам за участие!
— этот код работает, а если наоборот (height_ от size):
— то нет…
p/s height_ — это опция, а size — стандартное свойство minishop, версия модуля — последняя