Модуль Новое на форуме -> Исключение раздела

#1 31 января 2014 в 17:56
В стандартном модуле последних сообщений на форуме нет возможности исключить некий форум из вывода последних сообщений, хотя иногда надо — например, у меня есть один раздел в который постят всяку чухню — он открытый — и весь этот шлак идет на главную…
сделал для себя небольшой хак, чтобы исключить некоторые разделы из выдачи в этот модуль, может, кому еще нужно — выложу здесь…
1) В файл /modules/mod_forum/module.php после
  1. if($cfg['forum_id']){
  2. if($cfg['subs']){
  3. $forum = $model->getForum($cfg['forum_id']);
  4. if(!$forum){ return false; }
  5. $model->whereThisAndNestedForum($forum['NSLeft'], $forum['NSRight']);
  6. } else {
  7. $model->whereForumIs($cfg['forum_id']);
  8. }
  9. }
добавить
  1. if ( $cfg['forum_id_not'] ) {
  2. $model->whereForumNotIn( $cfg['forum_id_not'] );
  3. }
и в начале файла после
  1. 'forum_id' => 0,
добавить
  1. 'forum_id_not' => 0,
2) В файл /components/forum/model.php после
  1. public function whereForumIs($forum_id) {
  2. $this->inDB->where("t.forum_id = '{$forum_id}'");
  3. }
добавить:
  1. public function whereForumNotIn($forum_id_not) {
  2. $this->inDB->where("t.forum_id NOT IN ($forum_id_not)");
  3. }
3) В файл /admin/modules/mod_forum/backend.xml после:
  1. <param type="list_db" name="forum_id" src="cms_forums" src_title="title" src_value="id" tree="1" src_where="NSLevel>0">
  2. <option value="0" />
  3. </param>
добавить
  1. <param type="string" name="forum_id_not" title="Исключить (ID форумов через запятую)" default="0" />
Все вроде...

UPD: сделал, чтобы можно было скрывать несколько форумов, вводя ID через запятую…
#2 31 января 2014 в 18:18
Слишком скупое решение, действующее для одного конкретно взятого форума, даже без подфорумов.
#3 31 января 2014 в 18:47
lokanaft, ну проблема сделать вместо выпадающего меню input либо select с возможностью выбора нескольких вариантов очень большая же да?

ладно, сделаю универсальный вариант с возможностью выбора нескольких форумов на досуге joke
#4 31 января 2014 в 19:00

сделаю универсальный вариант

kukharski
smile
#5 31 января 2014 в 21:24
обновил первый пост… теперь можно выбирать через запятую айдишники форумов, которые не отображать
#6 31 января 2014 в 21:35
Хм, ну раз всё равно через ид. То можно было прямо в запросе NOT IN({$cfg['forum_id_not']})
#7 31 января 2014 в 21:37
lokanaft, ну я вначале так и делал, но чет ругалась муся… пошел по пути наименьшего сопротивления :)

UPD: исправил
#8 31 января 2014 в 22:02
Теперь функциональное, но неюзабительное) Благо нечасто надо настраивать.

Всё равно респект!
#9 31 января 2014 в 22:04
lokanaft, в том-то и дело, что один раз забил пару айдишников и забыл, поэтому мне лень разбираться, как в InstantCms селект с мультивыбором делать laugh
#10 12 февраля 2014 в 18:10
Можно сделать "мультиселект", но выглядит он весьма удручающе.
  1. <param type="list_db" name="forum_id_not" multiple="1" src="cms_forums" title="Кроме" src_value="id" tree="1" src_where="NSLevel>0">
  2. <option value="0" />
  3. </param>
Товарищи! Наплюсуем kukharski для заведения блога!
#11 12 февраля 2014 в 19:27
Плюсуем
#12 13 февраля 2014 в 03:53

Можно сделать «мультиселект», но выглядит он весьма удручающе

lokanaft
ну, может в сл. раз в чем-нить пригодится, а тут — один раз настроил и позабыл joke

ПС: спасибо за карму…
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.