TYMON_krot
Постоялец
- Регистрация
- 18 Авг 2017
- Сообщения
- 77
- Реакции
- 9
- Автор темы
- #1
Здравствуйте. Может кто решал такую проблему сортировки? Прошу поделиться решением
Проблема вот в чём: я выставил в магазине по умолчанию сортировку по дате добавления desceding, когда заходишь на сайт первый раз, всё сортирует как надо. Но после того как отсортировать, например, по цене, то в дальнейшем при переходе на другие категории он везде начинает сортировать по цене, хотя в выпадающем списке где выбирается сортировка стоит значение «дата изменения». И чтобы вернуть его обратно в режим сортировки по дате desceding, необходимо выбрать другой какой-то метод сортировки, а потом только выбрать по «дате добавления». Плагин VMSorting работает аналогично.
_________________________________________
Конкретно для моего случая, с учетом того, что новинки поступают ежедневно, и важно, чтобы пользователь при переходе в новую категорию видел последний добавленный товар, решил таким способом:
в файле administrator/components/com_virtuemart/models/product.php закомментировать прием переменной из сессии:
предположительно, строка 278-281
а также строчку предположительно 193
_____________________________________
Теперь я ещё заметил. Так как товар добавляется в разных валютах (рубль, доллар), а выводится в рублях, то сортировка происходит просто по базовой цене, без пересчета и учета валюты.
Например, Товар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 необходимо заменить строку:
На:
____________________________________________
Вот таким вот образом решаются некоторые проблемы сортировки в Virtuemart 3. Можно включить ещё плагин VMSorting и всё будет работать
Проблема вот в чём: я выставил в магазине по умолчанию сортировку по дате добавления 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 и всё будет работать
Последнее редактирование: