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

+22
1.27K
и так нам дано, форум, и модуль последних сообщений с форума
задачи стояли следующие:
* в одном блоке на главной странице вывести сообщения со всех форумом и подфорумов кроме двух разделов.
* на других страницах вывести всё с одного форума и всех его подфорумов (на некоторых не со всех его подфорумов- к примеру не нужен подфорум флуд)(и в зависимости от страницы с разных форумов)
на разных страницах вывод разных тем делается легко — копия модуля, и его настройка по моему желанию
а вот как сделать чтоб отовсюду за исключением чего то определённого
и так — как я нашёл выход из этого положения
открываем для редактирования
\admin\modules\mod_forum\backend.xml
находим
  1.  
  2. <param type="list_db" name="cat_id" title="Категория" src="cms_forum_cats" src_title="title" src_value="id" tree="0" >
  3. <option title="-- Все категории --" value="0" />
  4. </param>
  5.  
  6. <param type="list_db" name="forum_id" title="Темы из форума" src="cms_forums" src_title="title" src_value="id" tree="1" >
  7. <option title="-- Все форумы --" value="0" />
  8. </param>
  9.  
  10. <param type="flag" name="subs" title="Вместе с подфорумами" default="off" />
  11.  
  12.  
заменяем на
  1.  
  2.  
  3. <param type="list_db" multiple="1" name="forum_id" title="Темы из форума" src="cms_forums" src_title="title" src_value="id" tree="1" />
  4.  
  5.  
  6.  
далее открываем \modules\mod_forum\module.php
находим и удаляем строку (можно пропустить этот пункт)
  1.  
  2. if (!isset($cfg['subs'])) { $cfg['subs'] = 1; }
  3.  
находим следующий код
  1.  
  2. if($cfg['forum_id']){
  3. if (!$cfg['subs']){
  4. $catsql = " AND t.forum_id = '{$cfg['forum_id']}'";
  5. } else {
  6. $rootcat = $inDB->get_fields('cms_forums', "id='{$cfg['forum_id']}'", 'NSLeft, NSRight');
  7. if(!$rootcat) { return false; }
  8. $catsql = " AND (f.NSLeft >= {$rootcat['NSLeft']} AND f.NSRight <= {$rootcat['NSRight']})";
  9. }
  10. }
  11.  
  12.  
и заменяем его на
  1.  
  2. $t_list = array();
  3.  
  4. foreach($cfg['forum_id'] as $type){
  5. $t_list[] = "'$type'";
  6. }
  7.  
  8. $t_list = rtrim(implode(',', $t_list), ',');
  9.  
  10. $target_where = "AND c.target IN ({$t_list})";
  11.  
  12. if($cfg['forum_id']){
  13. $catsql = " AND t.forum_id IN ({$t_list})";
  14. }
  15.  
после чего в админке получаем вот такую картину — в списке можно выбрать из каких форумов выводить
Иллюстрация


ну и как обычно — от поощрений не откажусь (инфа на стене и в подписе на форуме), а так же приветствуется плюс в карму
0
Роман Роман 12 лет назад #
Зер гуд! Нужная вешь, беру на заметку
0
NIKITA NIKITA 12 лет назад #
плюс в карму
0
veronika veronika 12 лет назад #
Подскажите, а как сделать подобное для блогов? Сейчас выводятся все блоги даже из закрытых клубов((
0
Петр Петр 10 лет назад #
Кто видел подобное для 1.10.3?

Еще от автора

Модуль для бесплатной версии компонента "Попутчики" автора Олег
и так представляю вашему вниманию модуль для бесплатной версии компонента "Попутчики" написанной Олегом.
список всех Event-ов системы
решил отдохнуть минут пять от подготовки к госам - полез сюда на сайт, прочитал такую строку в комментах в одном из последних блогов пришла идея разыс
[Хак] Выйти/войти и остаться на той же странице
где то видел на форуме тему про редирект при логине \ разлогине - как остаться на той же самой странице, если у вас стоит форма входа на всех страница
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.