11  /  36

Пример создания модуля

Просмотров: 87186
Дата последнего изменения: 01.03.2023
Сложность урока:
3 уровень - средняя сложность. Необходимо внимание и немного подумать.
1
2
3
4
5

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

Визуально модули в Bitrix Framework для пользователя представляют собой лишь список на странице, где можно инсталлировать или деинсталлировать модуль в системе.

Поставим себе задачу сделать модуль, который бы просто при инсталляции ставил компонент. Возьмем компонент, который выводит текущую дату и время. Мы создали его в одном из предыдущих уроков. Имя компонента было dv:date.current.

Начнем с определения тех файлов и папок, которые нам нужно создать. Очевидно, что нам не нужно инсталлировать картинки, шаблоны, для решения нашей задачи не нужны административные скрипты и скрипты, которые вызывают административные, также не нужны.

Таким образом, структура модуля будет такой:

  • /install/
    • /components/
      • /dv/
        • /date.current/
          • /templates/
            • /.default/
              • template.php
          • component.php
          • .description.php
          • .parameters.php
    • index.php
    • step.php
    • unstep.php
    • version.php

Вся эта структура должна располагаться в папке /local/modules/dv_module, таким образом dv_module будет являться папкой создаваемого модуля.

Основной файл, код которого отвечает собственно за инсталляцию/деинсталляцию модуля — это /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 __construct()
{
$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()
{
CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/local/modules/dv_module/install/components",
             $_SERVER["DOCUMENT_ROOT"]."/bitrix/components", true, true);
return true;
}

function UnInstallFiles()
{
DeleteDirFilesEx("/local/components/dv");
return true;
}

function DoInstall()
{
global $DOCUMENT_ROOT, $APPLICATION;
$this->InstallFiles();
RegisterModule("dv_module");
$APPLICATION->IncludeAdminFile("Установка модуля dv_module", $DOCUMENT_ROOT."/local/modules/dv_module/install/step.php");
}

function DoUninstall()
{
global $DOCUMENT_ROOT, $APPLICATION;
$this->UnInstallFiles();
UnRegisterModule("dv_module");
$APPLICATION->IncludeAdminFile("Деинсталляция модуля dv_module", $DOCUMENT_ROOT."/local/modules/dv_module/install/unstep.php");
}
}
?>

В этом файле декларируется новый класс — класс нашего модуля dv_module как потомок CModule. Далее идет определение конструктора dv_module(), в которой происходит определение переменных для вывода информации о модуле в списке модулей Bitrix Framework.

Метод DoInstall() вызывается при установке модуля из Панели управления, метод DoUninstall(), соответственно, при деинсталляции модуля. В методах этого класса вызываются так или иначе файлы /install/step.php, /install/unstep.php и /install/version.php. Первые два файла — это файлы, которые показываются при установке и деинсталляции модуля, соответственно. Вспомогательный файл version.php содержит информацию о версии модуля. Коды файлов:

  • /install/step.php
    <?if(!check_bitrix_sessid()) return;?>
    <?
    echo CAdminMessage::ShowNote("Модуль dv_module установлен");
    ?>
  • /install/unstep.php
    <?if(!check_bitrix_sessid()) return;?>
    <?
    echo CAdminMessage::ShowNote("Модуль успешно удален из системы");
    ?>
  • /install/version.php
    <?
    $arModuleVersion = array(
    "VERSION" => "1.0.0",
    "VERSION_DATE" => "2010-06-03 17:00:00");
    ?>
Совет от Коваленко Алексея: Если вы осуществляете в модулях какие то операции с обработкой данных или действия, на которые готовы доверить "допуск" к корректировке данных, заложите свои события в системе. И те специалисты, которые будут внедрять ваши решения будут вам за это благодарны.
33
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии