Найти в Дзене

Разработка модуля для 1С-Битрикс. Первые шаги.

Оглавление

Что такое модуль Битрикс?

Разработчики используют чаще всего модуль Битрикс как инсталлятор для своих, либо кастомизированных компонентов. Визуально модули Битрикс для пользователя представляют собой лишь список на странице, где можно инсталлировать или деинсталлировать модуль в системе.
Разработчики используют чаще всего модуль Битрикс как инсталлятор для своих, либо кастомизированных компонентов. Визуально модули Битрикс для пользователя представляют собой лишь список на странице, где можно инсталлировать или деинсталлировать модуль в системе.

Делаем простой модуль

Поставим себе задачу сделать модуль, который бы просто при инсталляции ставил компонент, который мы сделали с вами в прошлом выпуске журнала — компонент, который выводит текущую дату и время. Имя компонента было dv:date.current. Итак, начнем. Все модули Битрикс располагаются в папке /bitrix/modules/, наш модуль не является исключением и также будет располагаться в этой же папке.

Структура модуля Битрикс

-2
-3
-4

Файл должен подключаться во всех административных скриптах модуля, помимо всего прочего в нем должны быть определены следующие две константы: ADMIN_MODULE_NAME - идентификатор модуля; ADMIN_MODULE_ICON - HTML код для большой иконки модуля выводимой над заголовком страницы.

Естественно, в структуру модуля могут входить любые другие файлы и папки, которые вы пожелаете. Так в модуль Интернет-магазин входят отчеты, обработчики доставки и платежные системы. В прошлый раз я позволил себе вольность и не учитывал поддержку мультиязычности. В рамках этой статьи я тоже не хотел бы касаться этого вопроса, т.е. мы с вами будем делать модуль только для русского пользователя.

Определяем структуру нашего модуля

Начнем с определения тех файлов и папок, которые нам нужно создать. Очевидно, что нам не нужно инсталлировать картинки, шаблоны, для решения нашей задачи не нужны административные скрипты и скрипты, которые вызывают административные, также не нужны. Да и новых классов в модуле декларироваться не будет. Таким образом, структура модуля будет такой: /install/ /install/index.php /install/step.php /install/unstep.php /install/version.php /install/components/ /install/components/dv/ /install/components/dv/date.current/templates/ /install/components/dv/date.current/templates/.default/template.php /install/components/dv/date.current/component.php /install/components/dv/date.current/.description.php /install/components/dv/date.current/.parameters.php Вся эта структура должна располагаться в папке /bitrix/modules/dv_module Таким образом dv_module будет являться папкой нашего модуля. Сразу же спешу обрадовать, что файлы в папке /install/components/ /install/components/ есть наш компонент, который мы хотим установить и поэтому писать эти файлы нам уже не надо. Основной файл, код которого отвечает собственно за инсталляцию/деинсталляцию модуля — это /install/index.php

Код его приведен ниже:

< ? Class dv_module extends CModule { var $MODULE_ID = "dv_module"; var $MODULE_VERSION; var $MODULE_VERSION_DATE; var $MODULE_NAME; var $MODULE_DESCRIPTION; var $MODULE_CSS; function dv_module() { $arModuleVersion = array(); $path = str_replace("\\", "/", __FILE__); $path = substr($path, 0, strlen($path) - strlen("/index.php")); include($path."/version.php"); if (is_array($arModuleVersion) && array_key_exists("VERSION", $arModuleVersion)) { $this->MODULE_VERSION = $arModuleVersion["VERSION"]; $this->MODULE_VERSION_DATE = $arModuleVersion["VERSION_DATE"]; } $this->MODULE_NAME = "dv_module - модуль с компонентом"; $this->MODULE_DESCRIPTION = "После установки вы сможете пользоваться компонентом dv:date.current"; } function InstallFiles($arParams = array()) { CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/dv_module/install/components", $_SERVER["DOCUMENT_ROOT"]."/bitrix/components", true, true); return true; } function UnInstallFiles() { DeleteDirFilesEx("/bitrix/components/dv"); return true; } function DoInstall() { global $DOCUMENT_ROOT, $APPLICATION; $this->InstallFiles(); RegisterModule("dv_module"); $APPLICATION->IncludeAdminFile("Установка модуля dv_module", $DOCUMENT_ROOT."/bitrix/modules/dv_module/install/step.php"); } function DoUninstall() { global $DOCUMENT_ROOT, $APPLICATION; $this->UnInstallFiles(); UnRegisterModule("dv_module"); $APPLICATION->IncludeAdminFile("Деинсталляция модуля dv_module", $DOCUMENT_ROOT."/bitrix/modules/dv_module/install/unstep.php"); } } ?>

В этом файле декларируется новый класс — класс нашего модуля dv_module как потомок CModule. Далее идет определение конструктора dv_module(), в которой происходит определение переменных для вывода информации о модуле в списке модулей Битрикс. Метод DoInstall() вызывается при установке модуля из панели управления Битрикс, метод DoUninstall(), соответственно, при деинсталляции модуля. В методах этого класса вызываются так или иначе файлы /install/step.php , /install/unstep.php и /install/version.php . Первые 2 файла — это файлы, которые показываются при установке и деинсталляции модуля, соответственно. Вспомогательный файл /install/version.php содержит информацию о версии модуля. Код файлов ниже: /install/step.php < ?if(!check_bitrix_sessid()) return;?> < ? echo CAdminMessage::ShowNote("Модуль dv_module установлен"); ?>