Создание компонента в Битрикс — полное руководство для разработчиков
ОглавлениеКраткий ответСтруктура компонентаСоздание простого компонентаОписание компонента (.description.php)Параметры компонента (.parameters.php)Использование result_modifier.phpПодключение компонента на страницеТипичные ошибкиЛучшие практикиFAQЗаключение
Компоненты в 1C-Битрикс — это основной способ построения логики отображения данных. Они позволяют инкапсулировать бизнес-логику, управлять выводом и повторно использовать код в разных частях проекта.
Краткий ответ
Компонент в Битрикс создаётся в директории/local/components/ и состоит минимум из файла component.php и шаблона template.php.
/local/components/vendor/component.name/
component.php
.description.php
.parameters.php
templates/.default/template.php
Структура компонента
Стандартный компонент Битрикс имеет следующую структуру:
/local/components/vendor/news.list/
component.php
.description.php
.parameters.php
/templates/.default/
template.php
style.css
script.js
result_modifier.php
- component.php — основная логика компонента
- .description.php — описание компонента
- .parameters.php — параметры в админке
- template.php — шаблон вывода
- result_modifier.php — постобработка данных
Создание простого компонента
1. Файл component.php
<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
die();
}
$arResult = [
'DATE' => date('d.m.Y H:i:s'),
];
$this->includeComponentTemplate();
2. Шаблон template.php
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die(); ?>
<div class="component-date">
Текущая дата: <?= $arResult['DATE'] ?>
</div>
Описание компонента (.description.php)
<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
die();
}
$arComponentDescription = [
"NAME" => "Простой компонент даты",
"DESCRIPTION" => "Вывод текущей даты и времени",
"PATH" => [
"ID" => "custom",
"NAME" => "Мои компоненты"
]
];
Параметры компонента (.parameters.php)
<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
die();
}
$arComponentParameters = [
"PARAMETERS" => [
"CACHE_TIME" => [
"PARENT" => "BASE",
"NAME" => "Время кеширования",
"TYPE" => "STRING",
"DEFAULT" => 3600
]
]
];
Использование result_modifier.php
Файлresult_modifier.php позволяет модифицировать $arResult перед выводом шаблона.
<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
die();
}
$arResult['FORMATTED_DATE'] = strtoupper($arResult['DATE']);
Подключение компонента на странице
<?php
$APPLICATION->IncludeComponent(
"vendor:component.name",
"",
[
"CACHE_TIME" => 3600
]
);
Типичные ошибки
1. Отсутствие проверки B_PROLOG_INCLUDED
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
die();
}
Без этой проверки компонент может быть вызван напрямую.
2. Неправильная структура папок
Битрикс не распознаёт компонент, если отсутствует корректная структура/local/components/.
3. Отсутствие includeComponentTemplate()
Если не вызвать$this->includeComponentTemplate(), шаблон не будет подключён.
4. Игнорирование кеширования
Отсутствие кеширования может значительно снизить производительность сайта.5. Перегрузка логики в template.php
Вся бизнес-логика должна находиться вcomponent.php, а не в шаблоне.
Лучшие практики
- Используйте кеширование для всех компонентов
- Выносите логику в component.php
- Используйте result_modifier.php для подготовки данных
- Не пишите SQL напрямую — используйте ORM или API Битрикс
- Соблюдайте структуру /local/components/
FAQ
Где хранить компоненты в Битрикс?
Рекомендуется использовать директорию/local/components/, а не /bitrix/components/.