Инсталлятор и деинсталлятор
Инсталлятор и деинсталлятор размещаются в файле /local/modules/ID модуля/install/index.php. В нем должен быть описан класс, название которого совпадает с ID модуля. Например, так:
01 <?
02 Class mymodule extends CModule
03 {
04 var $MODULE_ID = "mymodule";
05 var $MODULE_NAME;
06
07 function DoInstall()
08 {
09 global $DB, $APPLICATION, $step;
10 $APPLICATION->IncludeAdminFile(GetMessage("FORM_INSTALL_TITLE"),
$_SERVER["DOCUMENT_ROOT"]."/local/modules/mymodule/install/step1.php");
11 }
12
13 function DoUninstall()
14 {
15 global $DB, $APPLICATION, $step;
16 $APPLICATION->IncludeAdminFile(GetMessage("FORM_INSTALL_TITLE"),
$_SERVER["DOCUMENT_ROOT"]."/local/modules/mymodule/install/unstep1.php");
17
18 }
19 }
20 ?>
Примечание: При описании модуля нужно наследоваться именно от CModule, потому что при добавлении ведущего слеша с CModule загрузка не пройдет по маске.
Метод DoInstall будет вызываться при нажатии на кнопку Установить в списке модулей административной панели. Соответственно, DoUninstall – при нажатии на кнопку Удалить.
Также в папке /install находятся файлы step1.php и unstep1.php. Если нужен многошаговый установщик, то следует создать файлы step1.php, step2.php и т.д. Задача установщика – зарегистрировать модуль в системе. На самом деле, для этого достаточно вызвать всего лишь одну функцию:
1 RegisterModule("mymodule");
Однако скорее всего для модуля понадобятся свои таблицы в БД и файлы. В таком случае, следует создать их в шагах инсталлятора (step1.php, step2.php и т.д.). Аналогично, в деинтсталляторе нужно сделать противоположные действия (удалить таблицы и файлы).
В качестве примера можно рассмотреть инсталляторы штатных модулей. Наиболее наглядный установщик у модуля Веб-Формы.
Примечание:
- Подчеркивание в ID модуля использовать нельзя. При добавлении модуля система проверяет допустимые символы в коде модуля. Можно использовать латинские буквы + цифры. Учтите, что если название модуля начинается с цифр, то работать не будет (в PHP функция/класс не могут начинаться с цифр). Также не стоит использовать смешанный регистр в коде модуля.
- Название класса модуля формируется аналогично ID модуля, с заменой точки на подчёркивание. Например, если ID модуля alexey.mycar, то класс будет: Class alexey_mycar .
Сторонние библиотеки
Использование сторонних библиотек возможно, если соблюдаются все лицензионные ограничения разработчиков библиотек. Если используется сторонняя библиотека, то необходимо проверить, чтобы имена объектов/классов/функций не совпадали с системными.
Библиотеку не стоит размещать в папке /local/modules/. Необходимые для работы модуля файлы лучше положить в ваш модуль, для удобства последующего обновления. Пользовательские же файлы с подобными файлами обычно кладутся в /local/php_interface/.
Пункт в меню админки
Если необходимо добавить в меню административной части системы пункты вашего модуля, то необходимо использовать событие OnBuildGlobalMenu.
Пример использования события для добавления собственного пункта в Список пользователей:
AddEventHandler("main", "OnBuildGlobalMenu", "MyOnBuildGlobalMenu");
function MyOnBuildGlobalMenu(&$aGlobalMenu, &$aModuleMenu)
{
foreach($aModuleMenu as $k => $v)
{
if($v["parent_menu"] == "global_menu_settings" && $v["items_id"] == "menu_users")
{
$aModuleMenu[$k]["items"][] = Array(
"text" => "Кастомный пункт пользователей",
"url" => "user_custom.php?lang=".LANG,
"title" => "Своя страница пользователей"
);
}
}
}
Курсы разработаны в компании «1С-Битрикс»
!Прокрутить вверх