🧱 Суть

Компонент – это основной строительный блок страницы в 1С-Битрикс.
Он инкапсулирует логику получения данных, их обработку и вывод на страницу.

Компоненты позволяют повторно использовать функциональность без дублирования кода.

Общая схема работы:

Страница


IncludeComponent()


Компонент
    ├── Получение данных
    ├── Обработка
    └── Подключение шаблона


         HTML

📦 Проблема

Если писать всю логику прямо в index.php или шаблоне:

  • код быстро разрастается;
  • появляется дублирование;
  • сложно переиспользовать функциональность;
  • ухудшается поддерживаемость проекта.

✅ Решение

Выносить функциональность в компоненты.

Каждый компонент отвечает за одну конкретную задачу:

  • вывод списка новостей;
  • каталог товаров;
  • меню;
  • авторизацию;
  • форму обратной связи.

💻 Код

Подключение компонента

Компонент подключается через метод:

$APPLICATION->IncludeComponent(
    "bitrix:news.list",
    "",
    []
);

Аргументы метода:

  1. имя компонента;
  2. шаблон компонента;
  3. массив параметров.

Структура компонента

Типичная структура:

/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

🔗 Связано