Руководство по созданию модуля на ядре Битрикс D7

В этой статье мы создадим модуль для CMS 1С-Битрикс на ядре D7, который позволит добавлять ссылки на CSS и JS файлы через админку и подключать их в хедер шаблона сайта. Модуль будет называться esprimo.assets и будет работать как в папке local/modules, так и в bitrix/modules.

Руководство по созданию модуля на ядре Битрикс D7

Структура модуля

Для начала определим структуру модуля:


esprimo.assets/
├── admin/
│   └── settings.php     # Страница настроек модуля
├── install/
│   └── index.php       # Скрипт установки модуля
├── lang/
│   └── ru/
│       └── include.php # Языковые файлы
├── lib/
│   └── Main.php        # Логика работы модуля
└── templates/
    └── .default/
        └── template.php # Шаблон страницы с полями для CSS и JS
    

1. Создание файла установки модуля

Первым шагом создадим файл установки модуля в папке install/index.php. Этот файл будет регистрировать модуль в системе и устанавливать необходимые файлы.


<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();

use Bitrix\Main\ModuleManager;

class esprimo_assets extends CModule
{
    public $MODULE_ID = "esprimo.assets";
    public $MODULE_NAME = "Модуль Esprimo Assets";
    public $MODULE_DESCRIPTION = "Модуль для подключения CSS и JS файлов в хедер";

    public function __construct()
    {
        $this->PARTNER_NAME = "Esprimo";
        $this->MODULE_VERSION = "1.0.0";
        $this->MODULE_VERSION_DATE = "2025-03-25";
    }

    public function DoInstall()
    {
        ModuleManager::registerModule($this->MODULE_ID);
        $this->InstallFiles();
        $this->InstallDB();
    }

    public function DoUninstall()
    {
        $this->UninstallFiles();
        $this->UninstallDB();
        ModuleManager::unRegisterModule($this->MODULE_ID);
    }

    public function InstallFiles()
    {
        CopyDirFiles(__DIR__ . "/templates", $_SERVER["DOCUMENT_ROOT"] . "/bitrix/templates", true, true);
    }

    public function InstallDB()
    {
        // Если нужно, добавьте создание базы данных
    }

    public function UninstallFiles()
    {
        DeleteDirFilesEx("/bitrix/templates/esprimo.assets/");
    }

    public function UninstallDB()
    {
        // Если нужно, удалите базу?>
    

Описание кода:

  • Мы регистрируем модуль в системе через ModuleManager::registerModule().
  • Функции InstallFiles и UninstallFiles отвечают за установку и удаление файлов шаблонов, связанных с модулем.
  • InstallDB и UninstallDB могут использоваться для создания и удаления базы данных, если это необходимо.

2. Страница настроек модуля

Создадим страницу для ввода ссылок на CSS и JS файлы в админке. Это будет файл admin/settings.php.


<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();

use Bitrix\Main\Loader;
use Bitrix\Main\Page\Asset;

$APPLICATION->SetTitle("Настройки модуля Esprimo");

// Получаем уже сохраненные значения для CSS и JS файлов
$cssLink = COption::GetOptionString("esprimo.assets", "css_link", "");
$jsLink = COption::GetOptionString("esprimo.assets", "js_link", "");

if ($_SERVER["REQUEST_METHOD"] === "POST" && check_bitrix_sessid()) {
    // Получаем новые значения
    $cssLink = $_POST["CSS_LINK"];
    $jsLink = $_POST["JS_LINK"];

    // Сохраняем их
    COption::SetOptionString("esprimo.assets", "css_link", $cssLink);
    COption::SetOptionString("esprimo.assets", "js_link", $jsLink);

    // Перенаправляем, чтобы избежать повторной отправки формы
    LocalRedirect($APPLICATION->GetCurPage());
}
?>

<form method="post">
    <?=bitrix_sessid_post() ?>
    <table class="edit-table">
        <tr>
            <td>CSS файл:</td>
            <td><input type="text" name="CSS_LINK" value="<?= htmlspecialcharsbx($cssLink) ?>" size="50" /></td>
        </tr>
        <tr>
            <td>JS файл:</td>
            <td><input type="text" name="JS_LINK" value="<?= htmlspecialcharsbx($jsLink) ?>" size="50" /></td>
        </tr>
    </table>
    <input type="submit" value="Сохранить" class="adm-btn-save" />
</form>
    

Описание кода:

  • Мы используем COption::GetOptionString для получения текущих значений ссылок на CSS и JS, если они были сохранены ранее.
  • В форме мы создаем два поля для ввода URL-адресов CSS и JS файлов, а затем сохраняем их с помощью COption::SetOptionString.
  • При успешной отправке формы происходит перенаправление, чтобы предотвратить повторную отправку данных.

3. Логика подключения CSS и JS файлов

Теперь создадим класс, который будет отвечать за подключение файлов CSS и JS в хедер сайта. Логика будет размещена в файле lib/Main.php.


<?php
\Main\Page\Asset;

class Main
{
    public static function includeAssets()
    {
        // Получаем ссылки на CSS и JS из настроек модуля
        $cssLink = \COption::GetOptionString("esprimo.assets", "css_link", "");
        $jsLink = \COption::GetOptionString("esprimo.assets", "js_link", "");

        // Если указана ссылка на CSS, подключаем её
        if (!empty($cssLink)) {
            Asset::getInstance()->addCss($cssLink);
        }

        // Если указана ссылка на JS, подключаем её
        if (!empty($jsLink)) {
            Asset::getInstance()->addJs($jsLink);
        }
    }
}
?>
    

Описание кода:

  • Мы используем класс Bitrix\Main\Page\Asset, чтобы добавить CSS и JS файлы в хедер страницы с помощью методов addCss() и addJs().
  • Метод includeAssets() получает ссылки на CSS и JS из настроек модуля и подключает их, если они указаны.

4. Вставка подключения в шаблон сайта

Для того чтобы подключить файлы на всех страницах сайта, необходимо вызвать метод Esprimo\Assets\Main::includeAssets() в шаблоне сайта, например, в файле bitrix/templates/.default/header.php:


<?php
use Esprimo\Assets\Main;
Main::includeAssets();
?>
    

Описание кода:

  • Вставляем вызов метода includeAssets() в нужном месте шаблона, чтобы файлы CSS и JS автоматически подключались на всех страницах сайта.

5. Установка и использование модуля

  1. Разместите файлы модуля в папке local/modules/esprimo.assets или bitrix/modules/esprimo.assets.
  2. Перейдите в админку 1С-Битрикс, откройте раздел "Настройки" → "Модули", найдите и установите модуль Esprimo Assets.
  3. После установки перейдите в раздел "Настройки" → "Esprimo Assets", чтобы ввести URL для подключаемых CSS и JS файлов.
  4. Модуль автоматически подключит эти файлы на страницах сайта.

Заключение

Теперь у вас есть модуль для управления подключаемыми CSS и JS файлами через админку 1С-Битрикс. Вы можете легко обновлять ссылки на файлы через интерфейс модуля, а сам модуль будет автоматически подключать их на всех страницах сайта, улучшая его функциональность.

Теги:  Битрикс, модуль, D7, CSS, JS, админка

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Лечение сайтов от вирусов

восстановление сайта и подъем версии PHP

от 25 000 рублей
Лечение сайтов на решениях АСПРО и прочих.

* полный комплекс лечения проекта и закрытия дыр

Лендинг

от 3 дней

от 25 000 рублей

Разработка одностраничного сайта на платформе Битрикс

* стоимость зависит от наличия верстки, использования готового решения и т.д.

Интернет-магазин на готовом решении

от 7 дней

от 40 000 рублей
запуск сайта в максимально короткие сроки

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.