Делаем запоминающую сортировку

Тема в разделе "Opencart", создана пользователем Yuriy_Z, 26 мар 2013.

Информация :
Внимание форумчане! При создании тем, или выкладывании какой-либо информации проверьте в какой ветке форума вы находитесь! Не путайте Opencart и Opencart2. При несоблюдении данного условия выносится соответствующее наказание! И потом не говорите что вас НЕ ПРЕДУПРЕЖДАЛИ! По возможности используйте обменники mail, yandex, google, dropbox, rghost Дабы избежать просьб перезалить и проблем с рекламой!
Модераторы: ZiX
  1. Yuriy_Z

    Yuriy_Z Доработка+ OpenCart

    Регистр.:
    22 июл 2012
    Сообщения:
    159
    Симпатии:
    91
    Всем известный стандартный способ сортировки товаров в категории на opencart(по цене, названию ... по количеству отображаемых товаров на странице).
    Сортировка работает нормально, вот только есть одно неудобство для пользователей сайта - если перейти на другую страницу или категорию сайта то ранее выбранный вами способ сортировки не запоминается и при открытии другой категории вам приходится снова выбирать способ сортировки.
    Для того чтобы способ сортировки запоминался необходимо всего в одном файле внести изменения а именно в
    catalog/controller/product/category.php

    Ищем
    PHP:
            if (isset($this->request->get['sort'])) {
                
    $sort $this->request->get['sort'];
            } else {
                
    $sort 'p.sort_order';
            }

            if (isset(
    $this->request->get['order'])) {
                
    $order $this->request->get['order'];
            } else {
                
    $order 'ASC';
            }
    Меняем на
    PHP:
            if (empty($_SESSION['sort']) or empty($_SESSION['order'])) {
                
    $sort $_SESSION['sort'] = isset($this->request->get['sort']) ? $this->request->get['sort'] : 'p.sort_order';
                
    $order $_SESSION['order'] = isset($this->request->get['order']) ? $this->request->get['order'] : 'ASC';
          } elseif(isset(
    $this->request->get['sort'])) {
              
    $sort $_SESSION['sort'] = $this->request->get['sort'];
              
    $order $_SESSION['order'] = $this->request->get['order'];
          } else  {
              
    $sort $_SESSION['sort'];
              
    $order $_SESSION['order'];
          }
    Ищем
    PHP:
            if (isset($this->request->get['limit'])) {
                
    $limit $this->request->get['limit'];
            } else {
                
    $limit $this->config->get('config_catalog_limit');
            }
    Меняем на
    PHP:
            if (empty($_SESSION['limit'])) {
                
    $limit $_SESSION['limit'] = isset($this->request->get['limit']) ? $this->request->get['limit'] : $this->config->get('config_catalog_limit');
            } elseif(isset(
    $this->request->get['limit'])) {
                
    $limit $_SESSION['limit'] = $this->request->get['limit'];
            } else 
    $limit $_SESSION['limit'];
     
    tarvolok, maxim nestoff, DreamFish и ещё 1-му нравится это.
  2. Vadima4

    Vadima4 Писатель

    Регистр.:
    13 дек 2009
    Сообщения:
    9
    Симпатии:
    0
    Работает! Может какие то баги кто то замечал ?
     
  3. Yuriy_Z

    Yuriy_Z Доработка+ OpenCart

    Регистр.:
    22 июл 2012
    Сообщения:
    159
    Симпатии:
    91
    Например какие баги? ) Ето ж сессия которая хранит выбрание параметры пользователем, здесь багов не может быть)
     
  4. Vadima4

    Vadima4 Писатель

    Регистр.:
    13 дек 2009
    Сообщения:
    9
    Симпатии:
    0
    Можно ставить любой модуль, не каких ошибок в дальнейшем не возникнет ?
     
  5. Yuriy_Z

    Yuriy_Z Доработка+ OpenCart

    Регистр.:
    22 июл 2012
    Сообщения:
    159
    Симпатии:
    91
    Нет, не возникнет!
    Только если надумаеш ставить Фильтр Про, то етот способ тебе не подойдет, так как фильтр про всех в одном месте держыт и способ сортировки "встроен в него"
     
  6. CAPAXA

    CAPAXA

    Регистр.:
    7 июн 2007
    Сообщения:
    909
    Симпатии:
    542
    Замените еще в шаблоне с get на post и вас полюбит Гугл :)
     
  7. avg1

    avg1 Создатель

    Регистр.:
    28 май 2009
    Сообщения:
    22
    Симпатии:
    0
    А нет ли мода, чтобы товары, которых нет в наличии показывались в конце списка?
     
  8. Yuriy_Z

    Yuriy_Z Доработка+ OpenCart

    Регистр.:
    22 июл 2012
    Сообщения:
    159
    Симпатии:
    91
    http://forum.opencart.ua/viewtopic.php?f=5&t=378
     
  9. snail

    snail Постоялец

    Регистр.:
    23 фев 2009
    Сообщения:
    51
    Симпатии:
    1
    а как сделать чтоб сортировка по умолчанию была по рейтингу?
     
  10. Yuriy_Z

    Yuriy_Z Доработка+ OpenCart

    Регистр.:
    22 июл 2012
    Сообщения:
    159
    Симпатии:
    91
    http://opencartforum.ru/topic/62-сортировка-товаров-по-ценепо-умолчанию/page__view__findpost__p__430

    можно менять такие значения

    $sort = 'pd.name'; - по Имени
    $sort = 'p.price'; - по Ценам
    $sort = 'rating'; - по Рейтингу

    Направление
    $order = 'ASC'; - от А до Я (Низкому)
    $order = 'DESC' - от Я до А (Высокому)
     
    snail нравится это.