Skip to content

Лучшие авторы по темам (доработка хука)

Добрый вечер!

Есть хук, позволяющий вывести в боковой блок топ авторов по темам. Хотелось бы его доработать (добавить настройку), чтобы можно было указать, из каких форумов учитываются созданные темы.

 

Можно ли это реализовать?

 

https://invisionpower.com/files/file/5433-raw33-top-topic-starters/

 

RAW33_Top_Topic_Starters.xml

Featured Replies

  • Author

Настройку мне удалось добавить (даже две, еще исключенные форумы). Но функция почему-то не работает... В чем проблема?

 

 

Довольно коряво Рау написал этот хук...

 

Найти:

						 'from'		=> array( 'topics' => 't' ),		
						 'order'	=> 'topts DESC',

Заменить на:

 

						 'from'		=> array( 'topics' => 't' ),
						 'where'	=> '1'.( $this->settings['ttS_forums'] ? ' AND t.forum_id IN ('.$this->settings['ttS_forums'].')' : '' ),
						 'order'	=> 'topts DESC',

Найти 3 раза:

 

'where'  => "t.start_date  > '".$topic_date."'",

Заменить на:

 

'where'  => "t.start_date  > '".$topic_date."'" . ( $this->settings['ttS_forums'] ? ' AND t.forum_id IN ('.$this->settings['ttS_forums'].')' : '' ),

 

Создать в АЦ настройку ttS_forums и указать через запятую ид форумов.

  • Author

А как эту настройку добавить в АЦ?

 

Я в хук добавил такую настройку:

 

<setting>
     <conf_id>306</conf_id>
     <conf_title>Форумы</conf_title>
     <conf_description><![CDATA[Из каких форумов загружать созданные темы.<br>Используйте CTRL  для выбора нескольких форумов.]]></conf_description>
     <conf_group>34</conf_group>
     <conf_type>multi</conf_type>
     <conf_key>ttS_forums</conf_key>
     <conf_value/>
     <conf_default/>
     <conf_extra>#show_forums#</conf_extra>
     <conf_evalphp><![CDATA[$key = 'ttS_forums';
if($save==1)
{
  $_POST[$key] = is_array($_POST[$key]) ? implode(",",$_POST[$key]) : '';
}
if($show==1)
$key .= '[]';]]></conf_evalphp>
     <conf_protected>0</conf_protected>
     <conf_position>2</conf_position>
     <conf_start_group/>
     <conf_add_cache>1</conf_add_cache>
     <conf_keywords/>
     <conf_title_keyword>ttS</conf_title_keyword>
     <conf_is_title>0</conf_is_title>
   </setting>

И после строки

 

return $this->registry->output->getTemplate('boards')->hookTopTopicStarters($tts);

Добавил функцию

 

private function _loadForumIds()
   {
       $forums = $this->registry->getClass('class_forums')->fetchSearchableForumIds();

       if(!$this->settings['ttS_forums'])
           return $forums;
	$forumIds = $this->_loadForumIds();
       if(!is_array($forumIds) || !count($forumIds))
           return true;
   }

Вроде заработало :) Правда, не знаю, насколько это решение правильное.

Edited by Strategius

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.