MS2: Как вывести список всех значений свойства?
Подскажите плз как получить список всех значений определённого свойства товара (например, все размеры или все цвета) в рамках заданного родителя и исключая дублирование?
Комментарии: 8
1. Получить все товары категории
2. Получить все свойства товаров
3. Исключить дубликаты
2. Получить все свойства товаров
3. Исключить дубликаты
Логично) Я надеялся, что у кого-нибудь есть готовое решение, т.к. необходимость такого фукнционала (вроде как) очевидна…
Если этого функционала нет — значит он не необходим. Ло-ги-ка.
Напиши свой вариант и предложи общественности, так работает Open Source.
Напиши свой вариант и предложи общественности, так работает Open Source.
Используя стандартные сниппеты, получилось сделать так:
чанк tpl.option.list
сниппет msUniqOptions
Я так понимаю, что вариант тормозной… Как бы первую часть сделать на php и не перегонять массив в строку и обратно)
[[!msProducts?
&tpl=`tpl.option.list`
&hideContainers=`1`
&toPlaceholder=`optns`
]]
[[!msUniqOptions? &input=`[[+optns]]`]]
чанк tpl.option.list
[[!msOptions?
&product=`[[+id]]`
&name=`size`
&tplOuter=`@INLINE [[+rows]]`
&tplRow=`@INLINE [[+value]]`
]]
сниппет msUniqOptions
$wospc = str_replace(array("\r\n", "\r", "\n", ","), '-', $input);
$array = array_filter(explode('-', $wospc));
$uniq = array_unique($array);
$output = '';
foreach ( $uniq as $value ) { $output = $output.$value; }
return $output;
Я так понимаю, что вариант тормозной… Как бы первую часть сделать на php и не перегонять массив в строку и обратно)
Ты недооцениваешь мощь msProducts
[[!msProducts?
&parents=`3`
&innerJoin=`{
"msProductOption":{"alias":"msProductOption","on":"msProductOption.product_id = msProduct.id"}
}`
&select=`{"msProductOption":"value"}`
&where=`{"msProductOption.key":"size"}`
&groupby=`msProductOption.value`
&tpl=`@INLINE <p>[[+value]]</p>`
&showLog=`1`
]]
Круто! Василий, благодарю!
Василий, курю сайт, но не нахожу… есть ли возможность в msProduct фильтрации по конкретному цвету, и каким образом при этом должен выглядеть параметр where (Что-то типа &where=`{«size»:«XXL»}`)
Решил проблему благодаря вот этому решению. Спасибо.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.