Создание дополнительного модуля для стандартного портала (IP.Board 2.x.x)

lena1

クリエイター
LV
0
 
Модули портала помещаются в папку ./sources/portal_plugins/ и состоят из двух частей:

- основное содержимое модуля
- файл конфигурации модуля

Файл конфигурации содержит техническую информацию о модуле, которая доступна на странице <b>Админцентр ⇒ Настройки ⇒ Дополнения портала</b>.

Сейчас на примере мы сделаем небольшой блок, который будет выводить последние созданные темы в определённом форуме.


<!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Создание файла модуля<!--sizec--></span><!--/sizec-->

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--><?php
/*
Модуль "Новые темы"
Для установки модуля, неодходимо:
1) заполнить конфигурационный файл;
2) создать шаблон в skin_portal (портал) со следующими параметрами:
&nbsp;&nbsp;&nbsp;&nbsp;а) название шаблона: стиль-блока
&nbsp;&nbsp;&nbsp;&nbsp;б) входящие переменные: $html=""
3) пройти в НАСТРОЙКИ > Дополнения портала > *ваш модуль* > Список предоставляемых тегов (это обновит данные портала);
4) добавить тег модуля в ВНЕШНИЙ ВИД > skin_portal (портал) > csite_skeleton_template.
*/

if ( ! defined( 'IN_IPB' ) )
{
&nbsp;&nbsp;&nbsp;&nbsp;print "<h1>Некорректный адрес</h1>Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы.";
&nbsp;&nbsp;&nbsp;&nbsp;exit();
}

class ppi_НАЗВАНИЕ_МОДУЛЯ&nbsp;&nbsp;//Здесь за место "НАЗВАНИЕ_МОДУЛЯ" необходимо вписать название вашего модуля. Название вписывается в нижнем регистре без пробелов.
{
&nbsp;&nbsp;&nbsp;&nbsp;var $ipsclass;
&nbsp;&nbsp;&nbsp;&nbsp;var $portal_object = array();

&nbsp;&nbsp;&nbsp;&nbsp;function init()
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;function show_НАЗВАНИЕ_МОДУЛЯ()&nbsp;&nbsp;//Здесь за место "НАЗВАНИЕ_МОДУЛЯ" необходимо вписать название вашего модуля. Название вписывается в нижнем регистре без пробелов.
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$html&nbsp;&nbsp;= "";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Далее идёт запрос к Базе Данных, который выбирает новые темы и выводит их на портал.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->ipsclass->DB->build_query( array( 'select' => 'tid, title',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Выбираются ID темы ("tid") и её название ("title").
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'from'&nbsp;&nbsp; => 'topics',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//ID темы и её название выбираются из таблицы "topics".
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'where'&nbsp;&nbsp;=> 'forum_id IN (24)',&nbsp;&nbsp;//ID темы и её название берутся только из форума, который обладает ID = 24.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'order'&nbsp;&nbsp;=> 'start_date DESC',&nbsp;&nbsp; //Сортировка списка тем происходит начиная с самой новой созданной темы, и заканчивая самой старой.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'limit'&nbsp;&nbsp;=> array(0,3) ) );&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Лимит тем в списке. В данном случае, количесво тем не превышет "3". "0" в начале обязателен!
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->ipsclass->DB->exec_query();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while ( $row = $this->ipsclass->DB->fetch_row() )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$html .= "<div><a href='{$this->ipsclass->vars['board_url']}/index.php?showtopic={$row['tid']}'>".$row['title']."</a></div>";&nbsp;&nbsp;//А вот эта строчка содержит HTML-код, в который будет заключаться ответ сервера на запрос к Базе Данных. Иными словами, здесь - HTML-код блока с новыми темами.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this->ipsclass->compiled_templates['skin_portal']->tmpl_НАЗВАНИЕ_МОДУЛЯ( $html );&nbsp;&nbsp;//Здесь за место "НАЗВАНИЕ_МОДУЛЯ" необходимо вписать название вашего модуля. Название вписывается в нижнем регистре без пробелов.
&nbsp;&nbsp;&nbsp;&nbsp;}
}

?><!--c2--></div><!--ec2-->

<b>НАЗВАНИЕ_МОДУЛЯ</b> - должно быть везде одинаковым.
Сохраняем этот шаблон в файл, например - <b>cc_new_themes.php</b>

Название файла должно соответствовать названию модуля, которое вы вписали в код выше!


<!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Создание файла настроек<!--sizec--></span><!--/sizec-->

Теперь приступаем ко второй части - создание конфигурационного файла.

Его шаблон:
<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--><?php
/*
Конфигурационный файл модуля "Новые темы"
*/

$PORTAL_CONFIG = array();

/**
* Название модуля в настройках
*/
$PORTAL_CONFIG['pc_title'] = "Новые темы";

/**
* Описание модуля в настройках
*/
$PORTAL_CONFIG['pc_desc']&nbsp;&nbsp;= "Модуль выводит новые темы из определённого форума";

/**
* Имя и описание тега блока
*/
$PORTAL_CONFIG['pc_exportable_tags']['show_НАЗВАНИЕ_МОДУЛЯ'] = array( 'show_НАЗВАНИЕ_МОДУЛЯ' , 'Вывести блок новых тем' );&nbsp;&nbsp;//Здесь за место "НАЗВАНИЕ_МОДУЛЯ" необходимо вписать название вашего модуля. Название вписывается в нижнем регистре без пробелов.

?><!--c2--></div><!--ec2-->


<!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Создание шаблона<!--sizec--></span><!--/sizec-->

Сейчас нам необходимо создать шаблон в - <b>skin_portal (портал)</b>.

Шаблон должен иметь название вида - <b>tmpl_НАЗВАНИЕ_МОДУЛЯ</b> и входящие переменные:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->$html=""<!--c2--></div><!--ec2-->

Далее, в само тело шаблона необходимо вставить:

<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->$html<!--c2--></div><!--ec2-->

<b>$html</b> - будет выводить тот код, который мы указали в файле основного содержания модуля.
 
Сверху