1. Уважаемые пользователи, прежде чем ответить в теме или создать новую,
    внимательно ознакомьтесь с правилами раздела

    Кому лень работать или руки не оттуда - пользуйтесь услугами специалистов
  2. Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.."

    Есть JED!!! Ищите там!!!

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

Тема в разделе "Virtuemart", создана пользователем TYMON_krot, 11 ноя 2018.

Информация :
  • Уважаемые пользователи, прежде чем ответить в теме или создать новую, внимательно ознакомьтесь с правилами раздела
  • Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.." Есть JED!!! Ищите там!!!
  • Аналоги ищите там же - на JED!!!
  • Новая версия? - У кого будет - тот выложит!
  1. TYMON_krot

    TYMON_krot Постоялец

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

    Проблема вот в чём: я выставил в магазине по умолчанию сортировку по дате добавления 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 и всё будет работать
     
    Последнее редактирование: 12 ноя 2018
  2. alxndr777

    alxndr777 Писатель

    Регистр.:
    12 июл 2014
    Сообщения:
    1
    Симпатии:
    0
    Последнее редактирование: 10 окт 2019
  3. Gsay

    Gsay Создатель

    Регистр.:
    10 дек 2012
    Сообщения:
    39
    Симпатии:
    9
    У меня проблема примерно "из той же оперы". Выставлена дефолтная сортировка по имени, все работает хорошо, ее можно сменить на другие. Меняю, например, на сортировку по дате поступления. Но при смене категории через стандартный модуль "virtuemart->categories" сортировка вновь сбрасывается в дефолтную. Специально проверил аналогичную ситуацию в Woocommerce, там при смене категории измененный порядок сортировка "запоминается". Посоветуйте решение, буду благодарен. Понимаю, что нужно где-то лишний раз применить функции getLastProductOrdering и setLastProductOrdering, но не могу разобраться, где именно.