Вход • Регистрация

Сортировка

  • 26 мая 2015 г.
  • Кто подскажет где прочитать про сортировку.
    Почему(точнее, об этом где-то написано??) sort1|2 - это по "цене", sort3|4 - это по "наименованию"?
    • 10 июня 2015 г. , редакция: 10 июня 2015 г.
    • На самом деле многое зависит от версии движка. Для 5.3, например, иногда вот такими штуками пользуюсь:
      1. Очень часто клиенты не желают показывать цены в виду целого ряда причин. Следовательно от "стандартной" сортировки нужно оставить только наименование, исключив цену... делает проще пареной репы, в файле shop.model.php
      Ищем функцию expand_sort_with_params()
      и меняем код как-то так
      Код
      $sort_fields_names = array(1 => $this->diafan->_('Цена', false), 3 => $this->diafan->_('Наименование товара', false));

      $sort_directions = array(
      1 => 'pr.price ASC',
      2 => 'pr.price DESC',
      3 => 's.name'._LANG.' ASC',
      4 => 's.name'._LANG.' DESC'
      );

      на:
      Код
      $sort_fields_names = array(1 => $this->diafan->_('Наименование товара', false));

      $sort_directions = array(
      1 => 's.name'._LANG.' ASC', /* Сортировка по наименованию товара по возрастанию */
      2 => 's.name'._LANG.' DESC' /* Сортировка по наименованию товара по убыванию */
      );

      и вуаля, сортировка по цене исчезает из стандартного набора порядков сортировки...

      2. По-умолчанию, насколько я уяснил товары отображаются на сайте так, как они расположеный в админке, что тоже не всегда удобно...
      Можно и это исправить. В файле shop.php ищем функцию public function init() и немножко исправляем код
      Код
      public function init()
      {
      $this->rewrite_variable_names = array('page', 'show', 'cat', 'sort', 'param');
      $this->diafan->rewrite_variable_names = $this->rewrite_variable_names;

      if (empty($this->diafan->sort)) {
      $this->diafan->sort=1;
      }

      то есть добавив кусочек кода:
      Код
      if (empty($this->diafan->sort)) {
      $this->diafan->sort=1;
      }

      мы получим при просмотре каталога товаров на сайте дефолтную сортировку по возрастанию (ASC) по наименованию товара...
      Код
      $this->diafan->sort=1;

      Это уже случай, когда мы предварительно вырезали возможность сортировки по цене, если же этого не делать то вместо единички нужно указать троечку...
      Как-то так...
    • 10 июня 2015 г.
    • Цитата
      Почему(точнее, об этом где-то написано??) sort1|2 - это по "цене", sort3|4 - это по "наименованию"?

      Не совсем так...
      Цитата
      $sort_directions = array(
      1 => 'pr.price ASC',
      2 => 'pr.price DESC',
      3 => 's.name'._LANG.' ASC',
      4 => 's.name'._LANG.' DESC'
      );

      Следовательно:
      1. pr.price ASC - сортировка по цене по возрастанию
      2. pr.price DESC - сортировка по цене по убыванию
      3. s.name'._LANG.' ASC - сортировка по наименованию по возрастанию
      4. s.name'._LANG.' DESC - сортировка по наименованию по убыванию

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум