VM 2.x Сортровка по цене с учетом скидки работает неправильно.

zartsergey

Постоялец
Регистрация
1 Окт 2013
Сообщения
68
Реакции
6
Собственно сабж.

Скидки делаются руками, так как они не в % , а индивидуальны для каждого товара(не спрашивайте почему так).
Вот скриншот - Для просмотра ссылки Войди или Зарегистрируйся

Но вот если сортировать по цене, то иной раз вылазит вот что:
Для просмотра ссылки Войди или Зарегистрируйся

Т.е. оно сортирует по изначальной цене, а хотелось бы то бы по override, если таковая есть.

Может ест ьу кого готовое решение?
Или может кто подскажет где эта функция в ВМ? Я запарился уже искать ее.
Спасибо.
 
Попробуйте отредактировать administrator/components/com_virtuemart/models/product.php ( vm версия 2.0.26d )


Первая правка строка приблизительно 420

Код:
case 'product_price':
//$filters[] = 'p.`virtuemart_product_id` = p.`virtuemart_product_id`';
$orderBy = ' ORDER BY `ff_final_price`, `product_price` ';


Вторая правка строка приблизительно 480


Код:
$ff_select_price = ' , IF(pp.override, pp.product_override_price, pp.product_price) as ff_final_price ';
if ($joinLang) {
$select = ' l.`virtuemart_product_id` FROM `#__virtuemart_products_' . VMLANG . '` as l';
if ($joinPrice == TRUE) {
$select = ' l.`virtuemart_product_id` ' . $ff_select_price . '  FROM `#__virtuemart_products_' . VMLANG . '` as l';   
}
$joinedTables[] = ' JOIN `#__virtuemart_products` AS p using (`virtuemart_product_id`)';
}
else {
$select = ' p.`virtuemart_product_id` FROM `#__virtuemart_products` as p';
if ($joinPrice == TRUE) {
$select = ' p.`virtuemart_product_id` ' . $ff_select_price . ' FROM `#__virtuemart_products` as p';   
}   
$joinedTables[] = '';
}
 
Теперь все нормально!
Но, перестала полностью работать сортировка в обратную сторону(от дорогого к дешевому)
 
Теперь все нормально!
Но, перестала полностью работать сортировка в обратную сторону(от дорогого к дешевому)

Чтоб сортировка в обратную сторону стала работать надо немного подправить
1 правка

Код:
//$filters[] = 'p.`virtuemart_product_id` = p.`virtuemart_product_id`';
                    $orderBy = ' ORDER BY `product_price` ';
                    $joinPrice = TRUE;

2 правка
Код:
//$selectFindRows = 'SELECT COUNT(*) FROM `#__virtuemart_products` ';
$ff_select_price = ' , IF(pp.override, pp.product_override_price, pp.product_price) as product_price ';
            if ($joinLang) {
      $select = ' l.`virtuemart_product_id` FROM `#__virtuemart_products_' . VMLANG . '` as l';
   if ($joinPrice == TRUE) {
                $select = ' l.`virtuemart_product_id` ' . $ff_select_price . '  FROM `#__virtuemart_products_' . VMLANG . '` as l';               
            }
            $joinedTables = ' JOIN `#__virtuemart_products` AS p using (`virtuemart_product_id`)';
        }
  else {
            $select = ' p.`virtuemart_product_id` FROM `#__virtuemart_products` as p';
if ($joinPrice == TRUE) {
                $select = ' p.`virtuemart_product_id` ' . $ff_select_price . ' FROM `#__virtuemart_products` as p';              
            }          
$joinedTables = '';
        }
Версия 2.0.22с
 
Последнее редактирование модератором:
Назад
Сверху