tskr
Создатель
- Регистрация
- 9 Окт 2008
- Сообщения
- 21
- Реакции
- 4
Для более корректной сортировки отсутствующего товара правим функцию sortSearchListQuery в administrator/components/com_virtuemart/models/product.php
В самом начале:
Далее в блоке switch ($this->filter_order) правим те сортировки, которыми пользуетесь. В моём случае это по цене и наименованию:
Далее ищем
$select = ' p.`virtuemart_product_id`'.$ff_select_price.' FROM `#__virtuemart_products` as p ';
и меняем на
$select = ' p.`virtuemart_product_id`'.$ff_select_price.$ff_select_notinstock.' FROM `#__virtuemart_products` as p ';
Теперь сортировка должна работать без учета кол-ва товара в наличии, а по факту его наличия. Сначала весь, которого больше нуля, потом остальной или у которого наличие не заполнено вовсе. И помните, что после обновления virtuemarta эти изменения пропадут, нужно будет делать заново.
В самом начале:
Код:
...
$ff_select_price = '';
$ff_select_notinstock = ''; // Добавить эту строку
$where = array();
...
Код:
case 'product_price':
$orderBy = ' ORDER BY orderme, `product_price` '; // В этой строке вставить orderme,
$ff_select_price = ', IF(pp.override, pp.product_override_price, pp.product_price) as product_price ';
$ff_select_notinstock = ', IF(p.product_in_stock > 0, 10, 1000) as orderme '; // Эту строку добавить
$joinPrice = TRUE;
break;
default;
if (!empty($this->filter_order)) {
$ff_select_notinstock = ', IF(p.product_in_stock > 0, 10, 1000) as orderme '; // Эту строку добавить
$orderBy = ' ORDER BY orderme, ' . $this->filter_order . ' '; // В этой строке вставить orderme,
}
else {
$this->filter_order_Dir = '';
}
break;
$select = ' p.`virtuemart_product_id`'.$ff_select_price.' FROM `#__virtuemart_products` as p ';
и меняем на
$select = ' p.`virtuemart_product_id`'.$ff_select_price.$ff_select_notinstock.' FROM `#__virtuemart_products` as p ';
Теперь сортировка должна работать без учета кол-ва товара в наличии, а по факту его наличия. Сначала весь, которого больше нуля, потом остальной или у которого наличие не заполнено вовсе. И помните, что после обновления virtuemarta эти изменения пропадут, нужно будет делать заново.
Последнее редактирование: