Зачем создавать модули для Битрикс
Собственные модули позволяют:
- Расширять функциональность сайта
- Переиспользовать код между проектами
- Публиковать решения в Marketplace
- Создавать коммерческие продукты
Структура модуля
Модуль Битрикс состоит из нескольких обязательных файлов:
local/modules/yourcompany.yourmodule/
├── install/
│ ├── index.php
│ ├── version.php
│ └── step1.php
├── lang/
│ └── ru/
│ └── install/
│ └── index.php
├── lib/
│ └── YourModule.php
└── options.php
Создание модуля
1. Файл install/index.php
<?php
if (!check_bitrix_sessid()) {
return;
}
\CModule::IncludeModule("main");
$MODULE_ID = "yourcompany.yourmodule";
$MODULE_NAME = "Ваш модуль";
$MODULE_DESCRIPTION = "Описание функциональности модуля";
if ($APPLICATION->GetException()) {
echo $APPLICATION->GetException()->GetString();
return;
}
?>
2. Файл install/version.php
<?php
$arModuleVersion = [
"VERSION" => "1.0.0",
"VERSION_DATE" => "2024-01-15 12:00:00"
];
?>
3. Основной класс модуля
<?php
namespace YourCompany\YourModule;
use Bitrix\Main\Loader;
use Bitrix\Main\Application;
class YourModule
{
public static function doSomething()
{
// Ваша логика
}
public static function getOption($name, $default = "")
{
return \COption::GetOptionString("yourcompany.yourmodule", $name, $default);
}
public static function setOption($name, $value)
{
\COption::SetOptionString("yourcompany.yourmodule", $name, $value);
}
}
?>
Работа с событиями
Модули могут подписываться на события системы:
// В install/index.php при установке
AddEventHandler("main", "OnAfterUserRegister", ["YourModule", "OnUserRegister"]);
// В классе модуля
class YourModule
{
public static function OnUserRegister($arFields)
{
// Обработка регистрации пользователя
}
}
Работа с базой данных
Используйте D7 API для работы с БД:
use Bitrix\Main\Application;
use Bitrix\Main\DB\Connection;
$connection = Application::getConnection();
$sqlHelper = $connection->getSqlHelper();
$sql = "SELECT * FROM your_table WHERE id = " . intval($id);
$result = $connection->query($sql);
while ($row = $result->fetch()) {
// Обработка данных
}
Настройки модуля
Создайте страницу настроек в options.php:
<?php
require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin.php");
$MODULE_ID = "yourcompany.yourmodule";
if ($_REQUEST["save"] && check_bitrix_sessid()) {
COption::SetOptionString($MODULE_ID, "some_option", $_REQUEST["some_option"]);
LocalRedirect($APPLICATION->GetCurPage() . "?lang=" . LANGUAGE_ID . "&saved=Y");
}
$aTabs = [
["DIV" => "edit1", "TAB" => "Настройки", "TITLE" => "Настройки модуля"]
];
$tabControl = new CAdminTabControl("tabControl", $aTabs);
?>
<form method="post" action="<?= $APPLICATION->GetCurPage() ?>">
<?= bitrix_sessid_post() ?>
<? $tabControl->Begin(); ?>
<? $tabControl->BeginNextTab(); ?>
<tr>
<td>Опция:</td>
<td>
<input type="text" name="some_option" value="<?= COption::GetOptionString($MODULE_ID, "some_option") ?>">
</td>
</tr>
<? $tabControl->Buttons(); ?>
<input type="submit" name="save" value="Сохранить">
<? $tabControl->End(); ?>
</form>
Публикация в Marketplace
Для публикации модуля в Marketplace:
- Подготовьте описание и скриншоты
- Протестируйте на разных версиях Битрикс
- Подготовьте документацию
- Заполните заявку на публикацию
Заключение
Создание модулей для Битрикс открывает множество возможностей для расширения функциональности и создания коммерческих продуктов. Начните с простых модулей и постепенно усложняйте функциональность.