mmkulikov

Сортировка по новым полям

Recommended Posts

В таблицу data добавлены новые поля, заполняются без проблем,

но не хочет сортировать по этим новым полям?

Как заставить работать сортировку по пользовательским полям?

Вот пример запроса /zemelnye-uchastki?order=u_lesa&asc=desc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кастомных сортировок еще не придумали.

А в чем сложность? Ни чем не отличается от "кастомного" поиска...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А в чем сложность? Ни чем не отличается от "кастомного" поиска...

 

В этом то и сложность, что по сложности не отличается))

 

В гридменеджере есть функция определяющая алгоритм сортировки prepareSortOrder

 

Суть добавления собственных сортировок состоит в том, что бы локализовать в шаблон построитель сеток, сделать его наследником базового и в своем локальном переопределить функционал упомянутой функции.

 

По пунктам:

1. Берем /apps/system/lib/frontend/grid/grid_constructor.php (файл А)

2. Копируем его в /template/frontend/agency/main/grid/local_grid_constructor.php (файл Б)

3. Внутри него удаляем все и заполняем

class Local_Grid_Constructor extends Grid_Constructor {}

Если аналогичный файл уже есть, то пункты 1-3 не нужно делать.

 

4. Из файла А копируем функцию 

protected function prepareSortOrder($params, $random = false, $premium=false){...}

полностью как есть внутрь файла Б между class Local_Grid_Constructor extends Grid_Constructor { и }

5. По аналогии вводим свою обработку параметра $params['order']

 

Обработчик готов. Осталось сообщить нашему движку, что мы работаем с новым гриддером.

 

Есть два пути:

1. Через файл настроек /settings.ini.php куда следует добавить три строки (троеточие добавлять не нужно)

...[GridConstructor]path='/main/grid/local_grid_constructor.php'name='Local_Grid_Constructor'

ПС. Этот метод не будет работать на версиях ниже 3.0.24

 
2. Через файл шаблона.
Для чего в /template/frontend/realia_complex/main/main.php
внутри main() после global $__site_title, $folder, $smarty; указывается локальный обработчик
require SITEBILL_DOCUMENT_ROOT.'/template/frontend/'.$this->getConfigValue('theme').'/main/grid/local_grid_constructor.php';$this->_setGridConstructor(new Local_Grid_Constructor());

или, можно разместить их в конструкторе контроллера шаблона.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас