Что такое модуль Битрикс?
Делаем простой модуль
Поставим себе задачу сделать модуль, который бы просто при инсталляции ставил компонент, который мы сделали с вами в прошлом выпуске журнала — компонент, который выводит текущую дату и время. Имя компонента было dv:date.current. Итак, начнем. Все модули Битрикс располагаются в папке /bitrix/modules/, наш модуль не является исключением и также будет располагаться в этой же папке.
Структура модуля Битрикс
Файл должен подключаться во всех административных скриптах модуля, помимо всего прочего в нем должны быть определены следующие две константы: 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 установлен"); ?>