Компоненты — это строительные блоки, из которых состоит любой сайт на 1С-Битрикс.
Это самодостаточные программные модули, которые решают конкретную задачу: выводят новости, показывают каталог товаров, отображают форму обратной связи и т.д.
Понимание их структуры и принципов работы — абсолютно необходимо для любого Битрикс-разработчика.
Принцип MVC: Разделение логики и представления
Главная идея компонента — отделить логику (получение и обработку данных) от представления (HTML-верстки).
- Логика находится в файле component.php.
- Представление находится в файлах шаблона (например, template.php).
Такой подход позволяет менять дизайн (шаблон) компонента, не затрагивая его программную часть, и наоборот.
Структура папок компонента
Каждый компонент находится в своей папке, например, /bitrix/components/bitrix/news.list/.codeCode
/news.list/
|-- .description.php # Описание компонента для визуального редактора
|-- .parameters.php # Описание параметров компонента
|-- component.php # Главный файл с логикой (Controller/Model)
|-- lang/ # Папка с языковыми файлами
| |-- ru/
| |-- .description.php
| |-- .parameters.php
|-- templates/ # Папка с шаблонами
|-- .default/ # Шаблон по умолчанию (View)
|-- template.php
|-- style.css
|-- script.js
|-- result_modifier.php
|-- component_epilog.php
|-- other_template/ # Другой шаблон
|-- ...
Ключевые файлы и переменные
- .parameters.php
- Назначение: Описывает настройки компонента, которые можно задать в визуальном редакторе (например, ID инфоблока, количество элементов на странице).
- Результат: Формирует массив $arComponentParameters.
- $arParams (входящие параметры)
- Где доступна: В component.php и в шаблоне.
- Что это: Массив, содержащий значения настроек, которые пользователь или программист задал при вызове компонента. Например, $arParams[‘IBLOCK_ID’].
- Как формируется: На основе настроек из .parameters.php и параметров, переданных при вызове $APPLICATION->IncludeComponent().
- component.php (логика)
- Назначение: Это «мозг» компонента. Здесь происходит вся работа: подключение модулей, обработка $arParams, запросы к базе данных, вычисления.
- Главная задача: Подготовить данные для вывода и сложить их в массив $arResult.
- Важно: В component.php не должно быть HTML-верстки.
- $arResult (результат работы логики)
- Где доступна: В component.php (для наполнения) и в шаблоне (для чтения).
- Что это: Массив, который component.php передает в шаблон. Он содержит все данные, необходимые для отображения: массив элементов, URL-ы, заголовки, результаты вычислений и т.д.
- template.php (представление)
- Назначение: Это «лицо» компонента. Его задача — взять данные из массива $arResult и красиво их отобразить с помощью HTML-верстки.
- Что содержит: В основном HTML-код и PHP-конструкции для вывода данных (foreach, if, echo).
- Важно: В template.php не должно быть сложных запросов к БД или бизнес-логики. Вся она должна быть в component.php.
Дополнительные важные файлы шаблона
- result_modifier.php: Этот файл подключается после component.php, но до template.php. Его задача — модифицировать массив $arResult. Например, подготовить цены к выводу, сгруппировать элементы, обрезать картинки. Это позволяет вынести всю «представительскую» логику из component.php, оставив там только получение «сырых» данных.
- component_epilog.php: Файл, который выполняется после вывода шаблона. Часто используется для установки заголовков и мета-тегов (SetPageProperty), так как на этом этапе уже точно известны все данные отображенного элемента.
Схема работы компонента
- Вызывается $APPLICATION->IncludeComponent().
- Битрикс находит компонент и подключает его .parameters.php для формирования $arParams.
- Запускается component.php. Он работает с $arParams, делает запросы к БД и наполняет массив $arResult.
- Подключается result_modifier.php шаблона, который может изменить $arResult.
- Подключается template.php шаблона. Он использует $arResult и $arParams для генерации HTML.
- HTML-код выводится на страницу.
- Подключается component_epilog.php.
Понимание этой схемы — ключ к грамотной разработке и кастомизации компонентов в Битрикс.
Компоненты Битрикс, component.php, template.php, .parameters.php, $arParams, $arResult, result_modifier.php, prolog.php, epilog.php.