Компоненты в 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/.
Можно ли создать компонент без шаблона?
Нет, компонент всегда должен иметь хотя бы один шаблон.
Что такое кеширование компонента?
Это механизм хранения результата выполнения компонента для ускорения загрузки страницы.
Можно ли использовать несколько шаблонов?
Да, один компонент может иметь несколько шаблонов в папке templates.
Заключение
Создание компонента в Битрикс — это базовый навык любого разработчика. Правильная структура, использование кеширования и разделение логики позволяют создавать масштабируемые и быстрые проекты.