Сортировка в 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 'пластик кремовый глянцевый')И тогда работает.            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.