Создание собственного компонента в 1С-Битрикс — это не магия, а чёткий технический процесс, открывающий двери к кастомизации и автоматизации вашего проекта. Это ключ от двери, за которой лежит полный контроль над функционалом сайта, будь то сложная фильтрация товаров, уникальный блок новостей или интеграция со сторонним сервисом. Давайте разберём этот путь по шагам, от концепции до работающего кода.
Что такое компонент и зачем он нужен?
В экосистеме Битрикс компонент — это логически завершённый, переиспользуемый блок, который отвечает за вывод информации и взаимодействие с пользователем. В отличие от простого включения области (include area), компонент обладает собственной бизнес-логикой, параметрами, шаблоном и кешированием. Он инкапсулирует функционал, делая код чистым и поддерживаемым.
Важно: Компоненты бывают стандартными (входят в дистрибутив) и пользовательскими (собственной разработки). Мы говорим о вторых.
Анатомия компонента: из чего он состоит
Каждый компонент живёт в отдельной папке внутри /local/components/ (рекомендуется) или /bitrix/components/. Его структура включает несколько ключевых файлов:
- .description.php — паспорт компонента: название, описание, иконка, параметры.
- class.php (опционально, но желательно) — основной класс компонента, где живёт логика.
- component.php — точка входа, файл-исполнитель.
- templates/ — папка для шаблонов. По умолчанию используется .default/template.php.
- lang/ru/.php — файлы локализации.
Пошаговое создание компонента «Hello World»
Создадим простой компонент для вывода приветственного сообщения. Назовём его custom:greeting.
Шаг 1: Создание структуры папок
Создайте папку по пути: /local/components/custom/greeting/. Здесь custom — пространство имён (ваш префикс), greeting — имя компонента.
Шаг 2: Файл описания (.description.php)
Этот файл определяет, как компонент будет выглядеть в визуальном редакторе.
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
$arComponentDescription = array(
'NAME' => 'Приветствие',
'DESCRIPTION' => 'Выводит настроенное приветственное сообщение',
'PATH' => array(
'ID' => 'custom',
'NAME' => 'Кастомные компоненты',
),
'ICON' => '/bitrix/images/icon.gif',
);
?>
Шаг 3: Класс компонента (class.php)
Здесь размещаем ядро логики. Наследуем от CBitrixComponent.
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
class CustomGreetingComponent extends CBitrixComponent
{
public function executeComponent()
{
// Подготовка параметров
$this->arParams['MESSAGE'] = $this->arParams['MESSAGE'] ?? 'Привет, мир!';
$this->arParams['COLOR'] = $this->arParams['COLOR'] ?? '#000';
// Передача данных в шаблон
$this->arResult = [
'MESSAGE' => $this->arParams['MESSAGE'],
'COLOR' => $this->arParams['COLOR'],
];
// Подключение шаблона
$this->includeComponentTemplate();
}
}
?>
Шаг 4: Точка входа (component.php)
Этот файл обычно минимален, если есть класс.
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
// Подключаем класс и создаём экземпляр
$component = new CustomGreetingComponent($this);
$component->executeComponent();
?>
Шаг 5: Шаблон (.default/template.php)
Визуальное представление. Данные доступны через массив $arResult.
<div style="color: <?=$arResult['COLOR']?>; font-size: 24px; padding: 20px;">
<?=htmlspecialcharsbx($arResult['MESSAGE'])?>
</div>
Шаг 6: Подключение на странице
В нужном месте шаблона или в визуальном редакторе добавьте вызов:
<?php
$APPLICATION->IncludeComponent(
'custom:greeting',
'',
array(
'MESSAGE' => 'Добро пожаловать на наш сайт!',
'COLOR' => '#2ecc71',
)
);
?>
Профессиональный совет: Всегда используйте /local/components/ для собственных разработок. Это обезопасит ваши компоненты от перезаписи при обновлении ядра Битрикс.
Продвинутые техники
- Кеширование: Используйте методы
CPHPCacheили настройки$arParams['CACHE_TYPE']в.parameters.phpдля ускорения работы. - AJAX-режим: Реализуйте обработку AJAX-запросов внутри компонента, используя
\Bitrix\Main\Context::getCurrent()->getRequest(). - Наследование шаблонов: Создавайте несколько папок в
templates/(например,compact,card) для разных визуальных представлений одного компонента.
FAQ: Часто задаваемые вопросы
В чём разница между /bitrix/ и /local/?
/bitrix/ — системная папка ядра. Её изменение не рекомендуется. /local/ — ваша рабочая область для кастомизации. Все свои компоненты, модули и изменения размещайте здесь.
Обязательно ли создавать class.php?
Нет, всю логику можно писать в component.php. Но использование класса соответствует принципам ООП, повышает читаемость и позволяет легче наследовать функционал.
Как добавить параметры в визуальный редактор?
Создайте файл .parameters.php. В нём опишите массив $arComponentParameters, где зададите группы, параметры, их типы (STRING, LIST, CHECKBOX) и значения по умолчанию.
Почему компонент не отображается в списке?
Проверьте: 1) Корректность пути и имени в .description.php. 2) Наличие файла .description.php. 3) Что компонент размещён в /local/components/. 4) Не кешируется ли административный раздел (попробуйте очистить кеш).
Как отладить компонент?
Используйте \Bitrix\Main\Diag\Debug::dump($variable); или стандартные функции PHP в режиме разработки. Внимательно проверяйте Административную панель (Alt+F10) на наличие ошибок.