Фильтр записей в типе контента по алфавиту по умолчанию ICMS2. Как?

#1 24 февраля 2016 в 19:22
Какой запрос в модели или фронте надо отредактировать, чтобы по умолчанию фильтрация была не по дате добавления, а по алфавиту?
В идеале такую же настройку в самой системе, чтобы у каждого типа контента можно было выбирать вариант фильтрации: по алфавиту, по дате, по рейтингу и т.д.
#2 24 февраля 2016 в 19:27
сделать набор, поставить его первым и все…
#3 24 февраля 2016 в 19:43
Лучше в хуке прописать
  1. $model->orderBy('title');
#4 24 февраля 2016 в 19:45

Лучше в хуке прописать

Loadырь
а почему такой вариант лучше?
#5 24 февраля 2016 в 19:58
Вы спрашивали

Какой запрос в модели или фронте надо отредактировать

yury
То что вы напишете в хуке, не слетит при очередном обновлении движка.
#6 24 февраля 2016 в 20:00
тогда вероятно глупый вопрос от меня — но как прописывать в хуке, это где?
#7 24 февраля 2016 в 20:11
Loadырь, так а наборы это с коробки, чего ему слетать то, меня при обновлениях ни разу ничего с ними не случалось)

Но если типов контента много и для всех надо, тогда так лучше будет
#8 24 февраля 2016 в 20:36
Наборы, конечно можно решить всё и наборами, для пользователей разницы никакой. Но по-моему в наборах урл меняет своё окончание на название набора. Но тут же подход изначально другой. Человеку надо срочно, что-то отредактировать в запросах модели или фронта. Одно радует, что он уже точно знает, что в бакенде и в шаблонах никаких запросов редактировать не надо. smile

Рассмотрим на примере хука для типа контента с системным именем — board
Согласно документации по хукам, создаём файл \system\controllers\content\hooks\content_board_list_filter.php

в него прописываете код
  1. <?php
  2.  
  3. class onContentContentBoardListFilter extends cmsAction {
  4.  
  5. public function run($data){
  6.  
  7. list($ctype, $model) = $data;
  8.  
  9. $model->orderBy('title', 'desc'); // или asc вместо desc
  10.  
  11. return array($ctype, $model);
  12.  
  13. }
  14.  
  15. }
в файле \system\controllers\content\manifest.php после строки 'hooks' => array( надо прописать наш новый хук чтоб стало примерно так
  1. <?php
  2.  
  3. return array(
  4.  
  5. 'hooks' => array(
  6. 'content_board_list_filter',
  7. 'admin_dashboard_chart',
  8. 'menu_content',
  9. 'user_delete',
  10. 'user_tab_info',
  11. 'user_tab_show',
  12. 'sitemap_sources',
  13. 'rss_feed_list',
  14. 'rss_content_controller_form',
  15. 'rss_content_controller_after_update'
  16. )
  17.  
  18. );
  19.  
Соответственно все слова board в названии файла и внутри этих двух файлов меняем на название вашего типа контента с учётом регистра.
#9 24 февраля 2016 в 20:38

сделать набор, поставить его первым и все...

Jestik
и это правильный ответ)

Лучше в хуке прописать

Loadырь
а в этом смысла нет, т.к. такие вопросы решаются штатно.

docs.instantcms.ru/manual/ctypes/datasets
#10 24 февраля 2016 в 20:52

. Человеку надо срочно, что-то отредактировать в запросах модели или фронта. Одно радует, что он уже точно знает, что в бакенде и в шаблонах никаких запросов редактировать не надо.

Loadырь
может в пользователях можно такое провернуть instantcms.ru/forum/thread23914-1.html ?)
#11 24 февраля 2016 в 21:08
yury, так вот откуда у вас чёткое понятие "править запрос". Увы, в пользователях нет встроенных хуков для таких целей. Так что там действительно надо править запросы вручную.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.