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

Структура модуля
Для начала определим структуру модуля:
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. Установка и использование модуля
- Разместите файлы модуля в папке
local/modules/esprimo.assets
илиbitrix/modules/esprimo.assets
. - Перейдите в админку 1С-Битрикс, откройте раздел "Настройки" → "Модули", найдите и установите модуль
Esprimo Assets
. - После установки перейдите в раздел "Настройки" → "Esprimo Assets", чтобы ввести URL для подключаемых CSS и JS файлов.
- Модуль автоматически подключит эти файлы на страницах сайта.
Заключение
Теперь у вас есть модуль для управления подключаемыми CSS и JS файлами через админку 1С-Битрикс. Вы можете легко обновлять ссылки на файлы через интерфейс модуля, а сам модуль будет автоматически подключать их на всех страницах сайта, улучшая его функциональность.