Множественный список цветов
Добрый день!
Подскажите как обращаться к списку кодов цветов опции товара с типом «Множественный список цветов» miniShop2.
При выводе в фильтре mFilter2 (чанк tpl.mFilter2.filter.checkbox ) хотелось бы чтобы рядом с текстовым значением цвета, например «Красный» выводился кружок с HEX кодом цвета.
Код чанка
Подскажите как обращаться к списку кодов цветов опции товара с типом «Множественный список цветов» miniShop2.
При выводе в фильтре mFilter2 (чанк tpl.mFilter2.filter.checkbox ) хотелось бы чтобы рядом с текстовым значением цвета, например «Красный» выводился кружок с HEX кодом цвета.
Код чанка
{var $key = $table ~ $delimeter ~ $filter}
<label for="mse2_{$key}_{$idx}" class="{$disabled}">
<input type="checkbox" name="{$filter_key}" id="mse2_{$key}_{$idx}" value="{$value}" {$checked} {$disabled}/>
<span>{$title}</span> <sup>{$num}</sup>
</label>
Заранее благодарен! Комментарии: 10
Можно посмотреть как он в базе хранится. Или спросить у @Алексей Смирнов
Обычный множественный список хранится в виде json
Множественный список цветов так:
{"values":["\u041f\u0440\u0438\u0445\u043e\u0436\u0430\u044f","\u0421\u043f\u0430\u043b\u044c\u043d\u044f","\u0413\u0430\u0440\u0434\u0435\u0440\u043e\u0431\u043d\u0430\u044f \u043a\u043e\u043c\u043d\u0430\u0442\u0430"]}
Множественный список цветов так:
{"values":[{"name":"\u0411\u0435\u043b\u044b\u0439","value":"#eee"},{"name":"\u0427\u0451\u0440\u043d\u044b\u0439","value":"#000"},{"name":"\u0421\u0435\u0440\u044b\u0439","value":"#999"},{"name":"\u041a\u0440\u0435\u043c\u043e\u0432\u044b\u0439","value":"#e8deb0"}]}
При выводе в чанке в {$value} попадает только 1 поле (name)
А, погоди, тебе в фильтрах же надо, тут есть фундаментальная проблема: в значения фильтров попадает название цвета, т.е. тебе нужно получить список названий со списком значений и из этого массива по названию получать значения.
Да в фильтрах.
Просто думал раз опцию с таким типом добавили в miniShop2, то и обращаться к данным этой опции как то попроще получится, без лишних запросов в базу.
Просто думал раз опцию с таким типом добавили в miniShop2, то и обращаться к данным этой опции как то попроще получится, без лишних запросов в базу.
Во-первых, minishop2 и msearch2 это разные компоненты и у них разные разработчики. Во-вторых, запрос нужен всего один — получить ассоциативный массив и записать его в плейсхолдер, если конечно ты используешь Fenom
Получилось реализовать? я тоже столкнулся с этой же проблемой, инструкция нет, куда копать не понятно
К сожалению нет, не получилось.
Обсуждение возможностей тут github.com/modx-pro/miniShop2/pull/761
А чтобы вытащить значения из БД в удобном формате — достаточно написать небольшой сниппет и результат его работы сохранить в переменную или Placeholder или setOption.
Простой сниппет Kvazicolor который вытащит сопоставление:
получаем:
А чтобы вытащить значения из БД в удобном формате — достаточно написать небольшой сниппет и результат его работы сохранить в переменную или Placeholder или setOption.
Простой сниппет Kvazicolor который вытащит сопоставление:
$name = 'colorushka'; // имя опции которая имеет цвета.
$tableon = $modx->getOption('table_prefix');
$asf = $modx->query("SELECT properties FROM `".$tableon."ms2_options` WHERE `key` = '".$name."'")->fetch(PDO::FETCH_ASSOC);
$out = json_decode($as['properties'],1);
$outx = [];
foreach ($out['values'] as $line){
$outx[$line['name']] = $line['value'];
}
return $outx;
Далее в феноме до вызова mfiler засунуть это все в плейсхолдер, например:{set $mypole = 'colorushka'}
{set $masscol[$lit['alias']] = 'Kvazicolor' | snippet : ['name' => $mypole]}
{$_modx->setPlaceholder('arrcolors',$masscol)}
Далее в чанке rowполучаем:
{var $key = $table ~ $delimeter ~ $filter}
{set $ezhikcolors = 'arrcolors' | placeholder}
..... любой код ....
<span class="checking" style="background-color: {$ezhikcolors [$filter_key][$value]}">{$title}</span>
Вот как то так.
я делаю связи и задача не в товаре а просто в каталоге вывести точки с цветом (hex) и я не понимаю как применить то что написали выше. Если не сложно, можете дать пример вывода? или напишите мне в ЛС я готов оплатить поддержку
Вы не указали где именно вывести.
Есть у нас как минимум 3 места: Страница товара, страница со списком товаров, корзина.
На странице товара пример есть по ссылке в теме гитхаба,
списки что в корзине что в каталоге — расписал.
по работе — лучше создайте или на сайте или в телеграмм-канале (раздел работа) предложение о работе — кто-нибудь откликнется.
Есть у нас как минимум 3 места: Страница товара, страница со списком товаров, корзина.
На странице товара пример есть по ссылке в теме гитхаба,
списки что в корзине что в каталоге — расписал.
по работе — лучше создайте или на сайте или в телеграмм-канале (раздел работа) предложение о работе — кто-нибудь откликнется.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.