Сортировка в msProducts
Существует ли возможность в sortby сделать ORDER BY CASE как в SQL?
Комментарии: 10
Разобрался. У меня идёт вызов через runSnippet. Может кому пригодится:
$ord = "
'Выключатели',
'Розетки электрические',
'Розетки TV',
'Розетки телеф/комп',
'Розетки акустические',
'Управление жалюзи',
'Светорегуляторы',
'Терморегуляторы теплого пола',
'Датчики движения',
'Выключатели автоматические',
'Вывод кабеля',
'Заглушки'
";
$sortby = "FIELD(Data.product_type,".$ord.")";
Еще можно указать &resources=`2,3,5,10,1` и пустой &sortby=``, тогда товары выведутся в указанном порядке.
Вчера про это писал.
Вчера про это писал.
Вариант с id совсем не то. У меня нужно сортировать по неуникальному полю характеристики.
Василий, и ещё вопрос. Как мне нужно написать параметр where, чтобы в результате в строке запроса получить:
`Data`.`product_type` != 'Рамки' AND `Data`.`product_type` != 'Вставки' AND (`Data`.`external_signs` = 'пластик кремовый глянцевый' OR `Data`.`external_signs_extra` = 'пластик кремовый глянцевый')
Не выходят скобки.
И если никак, то как можно обратится к modx_ms2_product_categories?
&where=`[
`Data`.`product_type` != 'Рамки' AND `Data`.`product_type` != 'Вставки' AND (`Data`.`external_signs` = 'пластик кремовый глянцевый' OR `Data`.`external_signs_extra` = 'пластик кремовый глянцевый')
]`
Просто массив из одной строки.
Василий, а как это параметр правильно в runSnippet передать?
$result = $modx->runSnippet('msProducts', array(
'parents' => 15,
'where' => "[`Data`.`product_type` != 'Рамки' AND `Data`.`product_type` != 'Вставки' AND (`Data`.`external_signs` = 'пластик кремовый глянцевый' OR `Data`.`external_signs_extra` = 'пластик кремовый глянцевый')]",
));
Нет, не работает. Этот параметр не попадает в общий where condition. fromJSON его почему-то убивает.
Получилось, но как по мне, то не совсем корректно. В сниппете msProducts внёс изменения начиная с 70-ой строки:
В таком варианте я могу передать параметр where вида:
if (strpos($scriptProperties['where'],'{') === false) $where[] = $scriptProperties['where'];
else $tmp = $modx->fromJSON($scriptProperties['where']);
//return print_r($where);
if (is_array($tmp)) {
$where = array_merge($where, $tmp);
}
Единственное что не совсем корректная проверка на JSON, как по мне.В таком варианте я могу передать параметр where вида:
Data.product_type NOT LIKE 'Рамки' AND Data.product_type NOT LIKE 'Вставки' AND (Data.external_signs LIKE 'пластик кремовый глянцевый' OR Data.external_signs_extra LIKE 'пластик кремовый глянцевый')
И тогда работает.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.