84 просмотров

Разработка модулей для 1С-Битрикс: от идеи до публикации

Содержание

Зачем создавать модули для Битрикс

Собственные модули позволяют:

  • Расширять функциональность сайта
  • Переиспользовать код между проектами
  • Публиковать решения в 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:

  • Подготовьте описание и скриншоты
  • Протестируйте на разных версиях Битрикс
  • Подготовьте документацию
  • Заполните заявку на публикацию

Заключение

Создание модулей для Битрикс открывает множество возможностей для расширения функциональности и создания коммерческих продуктов. Начните с простых модулей и постепенно усложняйте функциональность.

Автор статьи Evaris

Мы используем файлы cookie для улучшения работы сайта и персонализации контента. Продолжая использовать сайт, вы соглашаетесь с использованием cookies в соответствии с нашей Политикой конфиденциальности.