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

Сортировка объявлений по значению дополнительной характеристики

  • 19 июня 2017 г.
  • Добрейшего всем времени суток!
    Господа, подскажите, как можно организовать сортировку "по-умолчанию" для модуля объявлений по значению одной из дополнительных характеристик.
    Есть характеристика "Цена", со значениями вида "от ХХХХ рублей"... как бы отсортироваться по ней?
    • 20 июня 2017 г.
    • Вообще много вариантов. Если не вдумываться, то можно так.

      В административной части сайта выбираем раздел "Объявления". Далее закладка "Характеристики" и выбираем именно Вам нужную для сортировки характеристику. В её настройках отмечаем пункт "Отображать параметры в блоке для сортировки объявлений" и сохраняемся. Далее в пользовательской части открываем страницу списка объявлений и видим, что теперь можно сортировать объявления и по нужной нам характеристики. Жмем ссылку, указывающую нужную нам сортировку, грузится страница и в результате получаем то, что хотим. Теперь смотрим, а что в строке браузера. А там увидим что-то типа http://demo.diafan.ru/ads/cat1/sort3/

      Теперь у нас есть все, что нужно. А нужно число, следующее за словом sort. В нашем случае это 3. Можно обойтись и без этого, но дольше объяснять :)

      Как говориться - теперь кульминация. Берем файл modules/ab/ab.php и находим там вот этот код
      Код
      public function init()
      {
      if($this->diafan->configmodules("cat"))
      {
      $this->rewrite_variable_names[] = 'cat';
      }

      if ($this->diafan->_route->show)
      {
      $this->model->id();
      }
      elseif ($this->diafan->_route->edit)
      {
      $this->model->edit();
      }
      elseif ($this->diafan->_route->param)
      {
      $this->model->list_param();
      }
      elseif(isset($_GET["action"]))
      {
      switch($_GET["action"])
      {
      case 'search':
      $this->model->list_search();
      break;

      case 'my':
      $this->model->list_my();
      break;

      case 'block':
      $this->action->block();
      break;

      case 'delete':
      $this->action->delete();
      break;

      default:
      Custom::inc('includes/404.php');
      }
      }
      elseif (! $this->diafan->configmodules("cat"))
      {
      $this->model->list_();
      }

      elseif (! $this->diafan->_route->cat)
      {
      $this->model->first_page();
      }
      else
      {
      $this->model->list_category();
      }

      $this->model->result["form"] = $this->model->form();
      }
      Здесь выделено то, что скорректируем вот так
      Код
      public function init()
      {
      if($this->diafan->configmodules("cat"))
      {
      $this->rewrite_variable_names[] = 'cat';
      }

      if ($this->diafan->_route->show)
      {
      $this->model->id();
      }
      elseif ($this->diafan->_route->edit)
      {
      $this->model->edit();
      }
      elseif ($this->diafan->_route->param)
      {
      $this->model->list_param();
      }
      elseif(isset($_GET["action"]))
      {
      switch($_GET["action"])
      {
      case 'search':
      $this->model->list_search();
      break;

      case 'my':
      $this->model->list_my();
      break;

      case 'block':
      $this->action->block();
      break;

      case 'delete':
      $this->action->delete();
      break;

      default:
      Custom::inc('includes/404.php');
      }
      }
      elseif (! $this->diafan->configmodules("cat"))
      {
      $this->diafan->_route->sort = empty($this->diafan->_route->sort) ? '3' : $this->diafan->_route->sort;
      $this->model->list_();
      }
      elseif (! $this->diafan->_route->cat)
      {
      $this->model->first_page();
      }
      else
      {
      $this->diafan->_route->sort = empty($this->diafan->_route->sort) ? '3' : $this->diafan->_route->sort;
      $this->model->list_category();
      }
      $this->model->result["form"] = $this->model->form();
      }
      Таким образом добавили дважды строчку
      Код
      $this->diafan->_route->sort = empty($this->diafan->_route->sort) ? '3' : $this->diafan->_route->sort;
      Здесь число 3 - это то число, которые мы ранее определили.

      В чем минус? Минус в том, что если в настройках объявлений определить или убрать какую либо характеристику из возможных для сортировки, то это уже в нашем случае может и не быть число 3, так как данное число определяется по определенному алгоритму.
      Также минус и в том, что если убрать нужную характеристику из возможных для сортировки, то в лучшем случае получим иную сортировку. В худшем (тоже относится и к предыдущему минусу) - страницу 404.

      Если желаете другой способ, то надо лезть в modules/ab/ab.model.php и корректировать соответствующие sql-запросы.

      Успехов.
      • 20 июня 2017 г.
      • Виталий, был кто нибудь кому Вы не пожелали успеха в конце своего сообщения?)))
        • 20 июня 2017 г.
        • А я на все смотрю позитивно.
          Если кто-то что-то пытается понять и сделать, то это очень хорошо. Поэтому и желаю успешного результата.
          • 21 июня 2017 г.
          • А как интересно Максим (web-prosto) умудрился два раза спасибо сказать или за хорошую подсказку так можно делать?
            • 21 июня 2017 г.
            • Думаю ответ прост, но пояснять не буду, чтобы не провоцировать. Уверен, модератор все скорректирует и лишнее изымет.
              • 21 июня 2017 г.
              • Была аналогичная проблема у меня. Шибко умные очумельцы открывают одну страницу в нескольких окнах и жмут по очереди в каждом в итоге большие глаза и обвинения типа это у вас так хреново сайт работает. Думаю это из той же оперы :)
      • 21 июня 2017 г.
      • Отлично! Спасибо огромное, попробую и отпишусь о результатах :)

Новости

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