Создание модуля для SkillZ
Категория: / Документы / Документация и FAQ
Создание модуля для Skillz.
[0] Введение
Skillz изначально строился как модульный, расширяемый проект. Если вам не хватает функциональности системы, вы можете ее расширить, написав собственный модуль. Для всех модулей по-умолчанию используется ссылка index.php?m={module_name}, которая заменяется чпу аналогом m-{module_name}.html. Вы можете описать дополнительные чпу преобразования (см. функцию core_c::add_rewrite_urls($in, $out)).
Внешний вид страницы, сформированной модулем можно описать в админ панели. Создайте виртуальную страницу с именем вашего модуля, укажите стиль, тип страницы и привязку к группам. Также можно указать внешний вид для каждой страницы по отдельности - используйте поле идентификация при создании/редактировании страницы.
[1] Программирование модуля
Пример простейшего модуля с одним экспортируемым методом (принцип аля windows dll).
Все экспортируемые методы должны быть прописаны в бд (prefix_actions). Это делается с помощью скрипта, вызываемого при установке модуля (см. [2]), либо руками в ACP->методы(actions).
Экспортируемые методы обычно вызывают в блоках для отображение того или иного контента.
ВАЖНО: название модуля связано с именем директории в которой он лежит.
Имя модуля: {name}_c
Директория: modules/{name}
Имя класса: {name}
[2] Файл описания модуля module.info
Файл module.info лежит в корне папки модуля и имеет следующий формат
Этот файл может отсутствовать.
[3] Архивация / создание дистрибутива модуля
В Skillz используется собственный формат архивного модуля. Для упаковки используется скрипт contrib/packer.php. Все параметры необходимо задать в самом скрипте, далее вызываете его из командной строки php packer.php. Если настройки правильные, скрипт создаст дистрибутив модуля mod_module.spk.gz. В таком формате модуль может быть установлен из админ панели и проанализирован на наличие обновлений на сайте автора.
Важно: при установке модуль установится в папку mod_{ПАПКА}.spk.gz.
[4] Модули интеграции с другими приложениями
В Skillz предусмотрены системные ловушки (логин, логаут, обновление профиля..), которые могут обрабатываться некоторыми модулями. Например модуль интеграции с phpBB использует ловушки создания и удаления сессии, чтобы создать такие же в форуме. Чтобы модуль обрабатывал эти ловушки, необходимо в переменную cms core_depend_packages добавить значение с именем вашего модуля.
За подробностями - смотрите код модуля modules/mod_phpbb.
[0] Введение
Skillz изначально строился как модульный, расширяемый проект. Если вам не хватает функциональности системы, вы можете ее расширить, написав собственный модуль. Для всех модулей по-умолчанию используется ссылка index.php?m={module_name}, которая заменяется чпу аналогом m-{module_name}.html. Вы можете описать дополнительные чпу преобразования (см. функцию core_c::add_rewrite_urls($in, $out)).
Внешний вид страницы, сформированной модулем можно описать в админ панели. Создайте виртуальную страницу с именем вашего модуля, укажите стиль, тип страницы и привязку к группам. Также можно указать внешний вид для каждой страницы по отдельности - используйте поле идентификация при создании/редактировании страницы.
[1] Программирование модуля
Пример простейшего модуля с одним экспортируемым методом (принцип аля windows dll).
Все экспортируемые методы должны быть прописаны в бд (prefix_actions). Это делается с помощью скрипта, вызываемого при установке модуля (см. [2]), либо руками в ACP->методы(actions).
Экспортируемые методы обычно вызывают в блоках для отображение того или иного контента.
ВАЖНО: название модуля связано с именем директории в которой он лежит.
Имя модуля: {name}_c
Директория: modules/{name}
Имя класса: {name}
/*
Class: module_c
Desc: простейший модуль
*/
class module_c {
/*
конструктор
передается путь к модулю в качестве параметра
*/
function module_c( $m_path ) {
// конструктора может и не быть
}
/*
Пример метода, выводящего в блок информацию. Эта функция будет вызываеться при обработке блоков block_c::run() в файле includes/blocks.php.
Возвращет '', 0 в случае если подходящей информации не найдено (пустой вывоод)
Возвращает FALSE, если произошла ошибка
Возвращает Хендл шаблона, если выполнен успешно
*/
function block_method ($id) {
// получить указатель на класс ядра
$core = &core_c::get_instance();
$sql = "SELECT text FROM " . BLOG_TABLE . " WHERE id='{$id}' LIMIT 1;";
// запрос к бд
if( !($result = $core->db->sql_query($sql)) || !($row = $core->db->sql_fetchrow($result))) {
$core->errprint("Невозможно загрузить элемент");
return 0;
}
// генерим случайный идентификатор
$t_name = "ab" . ss_generate_rid();
/*
назначаем идентификатору шаблон
В этом примере шаблон берется из основного стиля (т.е. из templates), если у функции указаны дополнительные параметры, то шаблон будет браться из папки модуля module/templates/, что позволяет модулю иметь свои независимые шаблоны.
*/
$core->template->set_filenames(array($t_name=>'blocks/some_template.tpl'));
// сброс переменной шаблона
$core->template->reset_var('TEXT');
// передаем переменные в шаблон
$core->template->assign_vars(
array(
'TEXT' => $content,
'SOMEVAR' => 'just test'
));
// возвращаем хэндл шаблона для дальнейшей обработки и вывода
return $t_name;
}
}
[2] Файл описания модуля module.info
Файл module.info лежит в корне папки модуля и имеет следующий формат
# версия модуля (используется при апдейте)
version = 01
name = "module human name"
author = somename
comment = "Developed by megagroup (C) 2005\nOfficial site http://somedomain.ru"
# линк для автоматического апдейта модуля
package_url = "http://skillz.ru/downloads/modules/mod_search.spk.gz"
# скрипт, который запускается при удалении модуля
uninstall_script_url = "setup.php?type=uninstall"
# скрипт, запускаемый при установке
install_script_url = "setup.php?type=install"
Этот файл может отсутствовать.
[3] Архивация / создание дистрибутива модуля
В Skillz используется собственный формат архивного модуля. Для упаковки используется скрипт contrib/packer.php. Все параметры необходимо задать в самом скрипте, далее вызываете его из командной строки php packer.php. Если настройки правильные, скрипт создаст дистрибутив модуля mod_module.spk.gz. В таком формате модуль может быть установлен из админ панели и проанализирован на наличие обновлений на сайте автора.
Важно: при установке модуль установится в папку mod_{ПАПКА}.spk.gz.
[4] Модули интеграции с другими приложениями
В Skillz предусмотрены системные ловушки (логин, логаут, обновление профиля..), которые могут обрабатываться некоторыми модулями. Например модуль интеграции с phpBB использует ловушки создания и удаления сессии, чтобы создать такие же в форуме. Чтобы модуль обрабатывал эти ловушки, необходимо в переменную cms core_depend_packages добавить значение с именем вашего модуля.
За подробностями - смотрите код модуля modules/mod_phpbb.