[хак модуля] Последние сообщения с форумов

702
и так нам дано, форум, и модуль последних сообщений с форума
задачи стояли следующие:
* в одном блоке на главной странице вывести сообщения со всех форумом и подфорумов кроме двух разделов.
* на других страницах вывести всё с одного форума и всех его подфорумов (на некоторых не со всех его подфорумов- к примеру не нужен подфорум флуд)(и в зависимости от страницы с разных форумов)
на разных страницах вывод разных тем делается легко - копия модуля, и его настройка по моему желанию
а вот как сделать чтоб отовсюду за исключением чего то определённого
и так - как я нашёл выход из этого положения
открываем для редактирования
\admin\modules\mod_forum\backend.xml
находим
Код PHP:
		<param type="list_db" name="cat_id" title="Категория" src="cms_forum_cats" src_title="title" src_value="id" tree="0" >
            <option title="-- Все категории --" value="0" />
        </param>

		<param type="list_db" name="forum_id" title="Темы из форума" src="cms_forums" src_title="title" src_value="id" tree="1" >
            <option title="-- Все форумы --" value="0" />
        </param>

		<param type="flag" name="subs" title="Вместе с подфорумами" default="off" />
		
заменяем на
Код PHP:
		<param type="list_db" multiple="1" name="forum_id" title="Темы из форума" src="cms_forums" src_title="title" src_value="id" tree="1"  />


далее открываем \modules\mod_forum\module.php
находим и удаляем строку (можно пропустить этот пункт)
Код PHP:
		if (!isset($cfg['subs'])) { $cfg['subs'] = 1; }
находим следующий код
Код PHP:
		if($cfg['forum_id']){
			if (!$cfg['subs']){
				$catsql = " AND t.forum_id = '{$cfg['forum_id']}'";
			} else {
				$rootcat = $inDB->get_fields('cms_forums', "id='{$cfg['forum_id']}'", 'NSLeft, NSRight');
				if(!$rootcat) { return false; }
				$catsql = " AND (f.NSLeft >= {$rootcat['NSLeft']} AND f.NSRight <= {$rootcat['NSRight']})";
			}
		}

и заменяем его на
Код PHP:
        $t_list = array();

		foreach($cfg['forum_id'] as $type){
			$t_list[] = "'$type'";
        }

		$t_list = rtrim(implode(',', $t_list), ',');

		$target_where = "AND c.target IN ({$t_list})";

		if($cfg['forum_id']){
				$catsql = " AND t.forum_id IN ({$t_list})";
		}
после чего в админке получаем вот такую картину - в списке можно выбрать из каких форумов выводить



ну и как обычно - от поощрений не откажусь (инфа на стене и в подписе на форуме), а так же приветствуется плюс в карму
[Модуль] Последние материалы (выбор вывода по отдельности автора, даты, комментариев и просмотров) | [хак модуля] новое в блогах
Комментарии (4)
Роман 28 февраля 2012 в 16:01 0
Зер гуд! Нужная вешь, беру на заметку
NIKITA 2 марта 2012 в 12:45 0
плюс в карму
veronika 20 марта 2012 в 14:13 0
Подскажите, а как сделать подобное для блогов? Сейчас выводятся все блоги даже из закрытых клубов((
Петр 26 февраля 2014 в 07:18 0
Кто видел подобное для 1.10.3?