Курсы

Разработка модулей 1С-Битрикс: Структура и инсталляция

Разработка модулей 1С-Битрикс: Структура и инсталляция

Инсталлятор и деинсталлятор

Инсталлятор и деинсталлятор размещаются в файле /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С-Битрикс»

!Прокрутить вверх

🚀 Нужна помощь с сайтом на 1С-Битрикс или Аспро?

Я работаю удалённо по всей России и СНГ. Узнайте цены и условия для вашего города:

Все регионы →