Сортировка по цене. Товары с ценой 0 в конце
        Здравствуйте.
У меня кнопка сортировки написана так:
Подскажите как сделать? Спасибо
    
    
                                                                                
            У меня кнопка сортировки написана так:
<a href="#" data-sort="ms|price" data-dir="[[+mse2_sort:is=`ms|price:desc`:then=`desc`]]" data-default="desc" class="sort">По цене <span></span></a>Но нужно, что бы товары с ценой 0 отображались в конце списка, даже если мы сортируем по возрастанию цены.Подскажите как сделать? Спасибо
Комментарии: 5
                Мне кажется теми средствами, что есть в mFilter2 из коробки никак. Нужно писать свою сортировку.            
                    
                Помимо поля price нужно добавить еще одно поле, отражающее, например, возможность купить товар can_buy.
И обновлять его по логике can_buy = (price > 0)
Теперь в mFilter можно прописать сортировку сначала по can_buy, а затем уже по цене. Тогда товары с нулевой ценой будут всегда в конце.
                    И обновлять его по логике can_buy = (price > 0)
Теперь в mFilter можно прописать сортировку сначала по can_buy, а затем уже по цене. Тогда товары с нулевой ценой будут всегда в конце.
                В            
                    
                В общем решение не самое красивое, но рабочее.
1) Копируем файл
2) В этом файле везде
                    1) Копируем файл
/assets/components/msearch2/js/web/default.js и называем его /assets/components/msearch2/js/web/custom.js.2) В этом файле везде
mse2Config['actionUrl'] заменяем на '/assets/components/msearch2/actionCustom.php'3) Копируем файл /assets/components/msearch2/action.php и называем его /assets/components/msearch2/actionCustom.php4) В html коде сортировки указываем <a href="#" data-sort="ms|price" data-dir="[[+mse2_sort:is=`ms|price:desc`:then=`desc`]]" data-default="desc" class="sort">По цене <span></span></a>5) В файле actionCustom.php на 76 строчке меняем$paginatorProperties['sortby'] = !empty($sort)
            ? $mSearch2->getSortFields($sort)
            : '';на$sorting = '';
            if (!empty($sort)) {
            $sorting = $mSearch2->getSortFields($sort);
            if ($sorting == '`Data`.`price` desc') {
                $sorting = 'IF (`Data`.`price` > 0, 1, 0) desc, `Data`.`price` desc';
            } elseif ($sorting == '`Data`.`price` asc') {
                $sorting = 'IF (`Data`.`price` > 0, 1, 0) desc, `Data`.`price` asc';
            }
        }
        $paginatorProperties['sortby'] = $sorting;Радуемся            
                Так же нужно скопировать mFilter2 и назвать его mFilter2Custom.
В этом файле на 289 строке заменить
                    В этом файле на 289 строке заменить
if (!empty($sort)) {
    $paginatorProperties['sortby'] = $mSearch2->getSortFields($sort);
    $paginatorProperties['sortdir'] = '';
}наif (!empty($sort)) {
    $sorting = $mSearch2->getSortFields($sort);
    if ($sorting == '`Data`.`price` desc') {
        $sorting = 'IF (`Data`.`price` > 0, 1, 0) desc, `Data`.`price` desc';
    } elseif ($sorting == '`Data`.`price` asc') {
        $sorting = 'IF (`Data`.`price` > 0, 1, 0) desc, `Data`.`price` asc';
    }
    $paginatorProperties['sortby'] = $sorting;
    $paginatorProperties['sortdir'] = '';
}            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.