Модули портала помещаются в папку ./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 (портал) со следующими параметрами:
а) название шаблона: стиль-блока
б) входящие переменные: $html=""
3) пройти в НАСТРОЙКИ > Дополнения портала > *ваш модуль* > Список предоставляемых тегов (это обновит данные портала);
4) добавить тег модуля в ВНЕШНИЙ ВИД > skin_portal (портал) > csite_skeleton_template.
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Некорректный адрес</h1>Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы.";
exit();
}
class ppi_НАЗВАНИЕ_МОДУЛЯ //Здесь за место "НАЗВАНИЕ_МОДУЛЯ" необходимо вписать название вашего модуля. Название вписывается в нижнем регистре без пробелов.
{
var $ipsclass;
var $portal_object = array();
function init()
{
}
function show_НАЗВАНИЕ_МОДУЛЯ() //Здесь за место "НАЗВАНИЕ_МОДУЛЯ" необходимо вписать название вашего модуля. Название вписывается в нижнем регистре без пробелов.
{
$html = "";
//Далее идёт запрос к Базе Данных, который выбирает новые темы и выводит их на портал.
$this->ipsclass->DB->build_query( array( 'select' => 'tid, title', //Выбираются ID темы ("tid") и её название ("title").
'from' => 'topics', //ID темы и её название выбираются из таблицы "topics".
'where' => 'forum_id IN (24)', //ID темы и её название берутся только из форума, который обладает ID = 24.
'order' => 'start_date DESC', //Сортировка списка тем происходит начиная с самой новой созданной темы, и заканчивая самой старой.
'limit' => array(0,3) ) ); //Лимит тем в списке. В данном случае, количесво тем не превышет "3". "0" в начале обязателен!
$this->ipsclass->DB->exec_query();
while ( $row = $this->ipsclass->DB->fetch_row() )
{
$html .= "<div><a href='{$this->ipsclass->vars['board_url']}/index.php?showtopic={$row['tid']}'>".$row['title']."</a></div>"; //А вот эта строчка содержит HTML-код, в который будет заключаться ответ сервера на запрос к Базе Данных. Иными словами, здесь - HTML-код блока с новыми темами.
}
return $this->ipsclass->compiled_templates['skin_portal']->tmpl_НАЗВАНИЕ_МОДУЛЯ( $html ); //Здесь за место "НАЗВАНИЕ_МОДУЛЯ" необходимо вписать название вашего модуля. Название вписывается в нижнем регистре без пробелов.
}
}
?><!--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'] = "Модуль выводит новые темы из определённого форума";
/**
* Имя и описание тега блока
*/
$PORTAL_CONFIG['pc_exportable_tags']['show_НАЗВАНИЕ_МОДУЛЯ'] = array( 'show_НАЗВАНИЕ_МОДУЛЯ' , 'Вывести блок новых тем' ); //Здесь за место "НАЗВАНИЕ_МОДУЛЯ" необходимо вписать название вашего модуля. Название вписывается в нижнем регистре без пробелов.
?><!--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> - будет выводить тот код, который мы указали в файле основного содержания модуля.
- основное содержимое модуля
- файл конфигурации модуля
Файл конфигурации содержит техническую информацию о модуле, которая доступна на странице <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 (портал) со следующими параметрами:
а) название шаблона: стиль-блока
б) входящие переменные: $html=""
3) пройти в НАСТРОЙКИ > Дополнения портала > *ваш модуль* > Список предоставляемых тегов (это обновит данные портала);
4) добавить тег модуля в ВНЕШНИЙ ВИД > skin_portal (портал) > csite_skeleton_template.
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Некорректный адрес</h1>Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы.";
exit();
}
class ppi_НАЗВАНИЕ_МОДУЛЯ //Здесь за место "НАЗВАНИЕ_МОДУЛЯ" необходимо вписать название вашего модуля. Название вписывается в нижнем регистре без пробелов.
{
var $ipsclass;
var $portal_object = array();
function init()
{
}
function show_НАЗВАНИЕ_МОДУЛЯ() //Здесь за место "НАЗВАНИЕ_МОДУЛЯ" необходимо вписать название вашего модуля. Название вписывается в нижнем регистре без пробелов.
{
$html = "";
//Далее идёт запрос к Базе Данных, который выбирает новые темы и выводит их на портал.
$this->ipsclass->DB->build_query( array( 'select' => 'tid, title', //Выбираются ID темы ("tid") и её название ("title").
'from' => 'topics', //ID темы и её название выбираются из таблицы "topics".
'where' => 'forum_id IN (24)', //ID темы и её название берутся только из форума, который обладает ID = 24.
'order' => 'start_date DESC', //Сортировка списка тем происходит начиная с самой новой созданной темы, и заканчивая самой старой.
'limit' => array(0,3) ) ); //Лимит тем в списке. В данном случае, количесво тем не превышет "3". "0" в начале обязателен!
$this->ipsclass->DB->exec_query();
while ( $row = $this->ipsclass->DB->fetch_row() )
{
$html .= "<div><a href='{$this->ipsclass->vars['board_url']}/index.php?showtopic={$row['tid']}'>".$row['title']."</a></div>"; //А вот эта строчка содержит HTML-код, в который будет заключаться ответ сервера на запрос к Базе Данных. Иными словами, здесь - HTML-код блока с новыми темами.
}
return $this->ipsclass->compiled_templates['skin_portal']->tmpl_НАЗВАНИЕ_МОДУЛЯ( $html ); //Здесь за место "НАЗВАНИЕ_МОДУЛЯ" необходимо вписать название вашего модуля. Название вписывается в нижнем регистре без пробелов.
}
}
?><!--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'] = "Модуль выводит новые темы из определённого форума";
/**
* Имя и описание тега блока
*/
$PORTAL_CONFIG['pc_exportable_tags']['show_НАЗВАНИЕ_МОДУЛЯ'] = array( 'show_НАЗВАНИЕ_МОДУЛЯ' , 'Вывести блок новых тем' ); //Здесь за место "НАЗВАНИЕ_МОДУЛЯ" необходимо вписать название вашего модуля. Название вписывается в нижнем регистре без пробелов.
?><!--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> - будет выводить тот код, который мы указали в файле основного содержания модуля.