12  /  37

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

Просмотров: 13229 (Статистика ведётся с 06.02.2017)

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

Визуально модули в 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

Вся эта структура должна располагаться в папке /bitrix/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 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()
{
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(), в которой происходит определение переменных для вывода информации о модуле в списке модулей 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");
    ?>
Совет от Коваленко Алексея: Если вы осуществляете в модулях какие то операции с обработкой данных или действия, на которые готовы доверить "допуск" к корректировке данных, заложите свои события в системе. И те специалисты, которые будут внедрять ваши решения будут вам за это благодарны.
31
Курсы разработаны в компании «1С-Битрикс»

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