VM 3.x Реализация нормальной сортировки

TYMON_krot

Постоялец
Регистрация
18 Авг 2017
Сообщения
77
Реакции
9
Здравствуйте. Может кто решал такую проблему сортировки? Прошу поделиться решением

Проблема вот в чём: я выставил в магазине по умолчанию сортировку по дате добавления desceding, когда заходишь на сайт первый раз, всё сортирует как надо. Но после того как отсортировать, например, по цене, то в дальнейшем при переходе на другие категории он везде начинает сортировать по цене, хотя в выпадающем списке где выбирается сортировка стоит значение «дата изменения». И чтобы вернуть его обратно в режим сортировки по дате desceding, необходимо выбрать другой какой-то метод сортировки, а потом только выбрать по «дате добавления». Плагин VMSorting работает аналогично.
_________________________________________

Конкретно для моего случая, с учетом того, что новинки поступают ежедневно, и важно, чтобы пользователь при переходе в новую категорию видел последний добавленный товар, решил таким способом:

в файле administrator/components/com_virtuemart/models/product.php закомментировать прием переменной из сессии:

предположительно, строка 278-281
PHP:
/* public function setLastProductOrdering($ordering){
        $session = JFactory::getSession();
        return $session->set('vmlastproductordering', (string) $ordering, 'vm');
    } */

а также строчку предположительно 193
PHP:
//$this->setLastProductOrdering($filter_order);
_____________________________________
Теперь я ещё заметил. Так как товар добавляется в разных валютах (рубль, доллар), а выводится в рублях, то сортировка происходит просто по базовой цене, без пересчета и учета валюты.

Например, Товар1=20$ (окончательная цена приблизительно 1360р.), Товар2=1200$ (окончательная цена приблизительно 81600р.), Товар3=1500р. Товар4=1000р. Выставим это всё по возрастанию и получим на выходе такую сортировку:

1. Товар1 1360р. (20)
2. Товар4 1000р. (1000)
3. Товар2 81600р. (1200)
4. Товар3 1500р. (1500)

Что можно предпринять?
_______________________________________

Ответ подсказали на другом форуме:

В файле administrator/components/com_virtuemart/models/product.php необходимо заменить строку:
PHP:
$ff_select_price = ' , IF(pp.override, pp.product_override_price, pp.product_price) as product_price ';

На:
PHP:
$ff_select_price = ' , IF(pp.override, pp.product_override_price, pp.product_price)/(SELECT currency_exchange_rate from #__virtuemart_currencies WHERE virtuemart_currency_id=pp.product_currency) as product_price ';
____________________________________________

Вот таким вот образом решаются некоторые проблемы сортировки в Virtuemart 3. Можно включить ещё плагин VMSorting и всё будет работать
 
Последнее редактирование:
Пробовал, не получается на версии virtuemart 3.4.2, надо где то в vmmodel исправлять, но как?
страница :
Для просмотра ссылки Войди или Зарегистрируйся
сначала весь товар в долларах, потом рублях.
 
Последнее редактирование:
У меня проблема примерно "из той же оперы". Выставлена дефолтная сортировка по имени, все работает хорошо, ее можно сменить на другие. Меняю, например, на сортировку по дате поступления. Но при смене категории через стандартный модуль "virtuemart->categories" сортировка вновь сбрасывается в дефолтную. Специально проверил аналогичную ситуацию в Woocommerce, там при смене категории измененный порядок сортировка "запоминается". Посоветуйте решение, буду благодарен. Понимаю, что нужно где-то лишний раз применить функции getLastProductOrdering и setLastProductOrdering, но не могу разобраться, где именно.
 
Помогите советом! у меня не сортируются по цене дочерние товары. Цена установлена только на родительский товар, чтобы в случае смены цены, во всех дочерних она автоматом поменялась. Но при сортировке цена считается нулевой на эти дочерние товары. и они выходят вверху списка, хотя цена в выдаче правильная, но алгоритм сортировки ее не видит. Как сделать нормально сортировку по цене?
 
Помогите советом! у меня не сортируются по цене дочерние товары. Цена установлена только на родительский товар, чтобы в случае смены цены, во всех дочерних она автоматом поменялась. Но при сортировке цена считается нулевой на эти дочерние товары. и они выходят вверху списка, хотя цена в выдаче правильная, но алгоритм сортировки ее не видит. Как сделать нормально сортировку по цене?

по умолчание дочерние товары в род категории не выводятся...
вопрос - сами доделывали через правки, или через что у Вас там сортировка и какая?)
 
Назад
Сверху