🧱 Суть
Компонент – это основной строительный блок страницы в 1С-Битрикс.
Он инкапсулирует логику получения данных, их обработку и вывод на страницу.
Компоненты позволяют повторно использовать функциональность без дублирования кода.
Общая схема работы:
Страница
│
▼
IncludeComponent()
│
▼
Компонент
├── Получение данных
├── Обработка
└── Подключение шаблона
│
▼
HTML📦 Проблема
Если писать всю логику прямо в index.php или шаблоне:
- код быстро разрастается;
- появляется дублирование;
- сложно переиспользовать функциональность;
- ухудшается поддерживаемость проекта.
✅ Решение
Выносить функциональность в компоненты.
Каждый компонент отвечает за одну конкретную задачу:
- вывод списка новостей;
- каталог товаров;
- меню;
- авторизацию;
- форму обратной связи.
💻 Код
Подключение компонента
Компонент подключается через метод:
$APPLICATION->IncludeComponent(
"bitrix:news.list",
"",
[]
);Аргументы метода:
- имя компонента;
- шаблон компонента;
- массив параметров.
Структура компонента
Типичная структура:
/components/
└── company/
└── news.list/
├── component.php
├── class.php
├── templates/
├── .parameters.php
└── .description.phpОсновные файлы:
component.php– логика компонента;templates/– шаблоны отображения;.parameters.php– параметры компонента;.description.php– описание для визуального редактора.
Как работает компонент
Последовательность выполнения:
IncludeComponent()
│
▼
Получение параметров
│
▼
Получение данных
│
▼
Заполнение $arResult
│
▼
Подключение шаблона
│
▼
Вывод HTMLПараметры компонента
Компонент получает настройки через третий аргумент:
$APPLICATION->IncludeComponent(
"bitrix:news.list",
"",
[
"IBLOCK_ID" => 5,
"NEWS_COUNT" => 10,
]
);Они определяют поведение компонента.
Например:
- количество элементов;
- ID инфоблока;
- сортировку;
- кеширование.
$arParams
Все переданные параметры становятся доступны внутри компонента через массив:
$arParamsНапример:
$count = $arParams["NEWS_COUNT"];$arResult
После получения данных компонент заполняет массив:
$arResultНапример:
$arResult["ITEMS"] = $items;Именно его использует шаблон компонента для вывода данных.
Шаблон компонента
После выполнения логики подключается:
templates/.default/template.phpЗдесь обычно находится только отображение данных.
Например:
<?php foreach ($arResult["ITEMS"] as $item): ?>
<h2><?= $item["NAME"] ?></h2>
<?php endforeach; ?>Получение данных в шаблоне считается плохой практикой.
Стандартные компоненты
Битрикс поставляется с большим количеством готовых компонентов.
Например:
bitrix:menu
bitrix:news.list
bitrix:catalog
bitrix:breadcrumb
bitrix:search.formИх можно использовать без дополнительной разработки.
Собственные компоненты
Разработчик может создавать собственные компоненты.
Обычно они располагаются в:
/local/components/Например:
/local/components/company/weather/Такой подход безопасен при обновлении Битрикса.
Компонент и шаблон
Важно понимать различие:
Компонент
- получает данные;
- выполняет бизнес-логику.
Шаблон
- получает
$arResult; - отвечает только за отображение.
Такое разделение упрощает поддержку проекта.
Частые ошибки
Изменять стандартные компоненты
Плохо:
/bitrix/components/После обновления изменения будут потеряны.
Лучше:
- создать собственный компонент;
- использовать собственный шаблон.
Выполнять запросы в шаблоне
Плохо:
$result = CIBlockElement::GetList(...);в template.php.
Получение данных должно происходить в компоненте.
Не использовать $arParams
Жёстко прописанные значения делают компонент менее гибким.
Лучше получать настройки через параметры.
Смешивать логику и отображение
Шаблон должен только выводить данные.
Всю бизнес-логику следует оставлять внутри компонента.
Размещать собственные компоненты в /bitrix
Пользовательские компоненты рекомендуется хранить в:
/local/components/🎯 Вывод
- Компонент – основной элемент разработки в Битриксе
- Он объединяет получение данных, бизнес-логику и отображение
- Подключается через
IncludeComponent() - Данные передаются в шаблон через
$arResult, настройки – через$arParams - Стандартные компоненты изменять не рекомендуется
- Собственные компоненты следует размещать в
/local/components