Компоненты — это строительные блоки, из которых состоит любой сайт на 1С-Битрикс. Это логически завершённый код, предназначенный для извлечения информации из инфоблоков и других источников и преобразования её в HTML-код для отображения на веб-страницах. Если модули отвечают за «направление» (блог, интернет-магазин, CRM), то компоненты — это уже конкретные функциональные блоки: список новостей, корзина, форма обратной связи, меню и так далее.
Понимание структуры компонента — это база, с которой начинается путь любого разработчика в экосистеме 1С-Битрикс. В этой статье мы детально разберём, из каких файлов и папок состоит компонент, за что отвечает каждый из них и как они взаимодействуют друг с другом.
Где размещать компоненты?
Компоненты группируются по пространствам имён в двух основных папках:
Структура внутри /local/components/ выглядит так:
/local/components/
└── my/ # Пространство имён (namespace)
└── user.card/ # Название компонента
├── .description.php
├── .parameters.php
├── class.php # или component.php
├── templates/
│ └── .default/
│ ├── template.php
│ ├── style.css
│ └── script.js
└── lang/
└── ru/
└── messages.php
Полное имя компонента формируется как пространство_имён:название_компонента. Например, my:user.card.
Основные файлы и папки компонента
Разберём каждый элемент структуры подробно.
1. Файл component.php — «сердце» компонента (логика)
Это основной и обязательный файл компонента, содержащий всю бизнес-логику. Здесь происходит:
-
обработка входящих параметров (
$arParams); -
подключение необходимых модулей;
-
запросы к базе данных;
-
формирование массива
$arResultдля передачи в шаблон;
Важное правило: в component.php не должно быть HTML-вёрстки. Это файл только для логики.
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
// Получаем ID пользователя из параметров
$userId = intval($arParams['USER_ID']);
// Запрашиваем данные пользователя
$arResult['USER'] = CUser::GetByID($userId)->Fetch();
// Подключаем шаблон для вывода
$this->includeComponentTemplate();
2. Файл class.php — современная альтернатива component.php
В современных проектах на D7 рекомендуется использовать class.php вместо component.php.
Преимущества подхода с классом:
-
инкапсуляция всего кода в одном классе;
-
возможность повторно использовать методы, данные и параметры компонента;
-
более чистая и поддерживаемая архитектура.
Класс компонента должен наследоваться от CBitrixComponent и реализовывать метод executeComponent().
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
class UserCardComponent extends CBitrixComponent
{
public function executeComponent()
{
$this->arResult['USER'] = CUser::GetByID(
intval($this->arParams['USER_ID'])
)->Fetch();
$this->includeComponentTemplate();
}
}
Важно: файл должен называться именно
class.php(все буквы строчные), так как в Linux регистр имеет значение.
3. Файл .parameters.php — описание входных параметров
Этот файл описывает настройки компонента, которые будут отображаться в визуальном редакторе. Здесь содержится массив $arComponentParameters, в котором перечисляются все параметры, доступные для настройки.
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
$arComponentParameters = [
'GROUPS' => [
'USER_CARD' => [
'NAME' => 'Параметры карточки пользователя',
],
],
'PARAMETERS' => [
'USER_ID' => [
'NAME' => 'Идентификатор пользователя',
'TYPE' => 'NUMBER',
'PARENT' => 'USER_CARD',
],
'SHOW_EMAIL' => [
'NAME' => 'Показывать email',
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'Y',
'PARENT' => 'USER_CARD',
],
],
];
Важно: этот файл не подключается при работе самого компонента на странице, он используется только в визуальном редакторе и режиме редактирования сайта.
4. Файл .description.php — описание компонента
Файл содержит информацию о компоненте, которая отображается в визуальном редакторе: название, описание и расположение в дереве компонентов.
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
$arComponentDescription = [
'NAME' => 'Карточка пользователя',
'DESCRIPTION' => 'Выводит карточку с информацией о пользователе',
'PATH' => [
'ID' => 'my',
'NAME' => 'Мои компоненты',
],
];
Этот файл необязателен для работы компонента, но без него разместить компонент через визуальный редактор будет невозможно. Как и .parameters.php, этот файл не подключается при работе компонента на странице.
5. Папка templates/ — шаблоны отображения
В этой папке хранятся шаблоны компонента, определяющие внешний вид вывода данных. Внутри могут быть несколько папок — каждая представляет отдельный шаблон. Папка .default — это шаблон по умолчанию.
Основные файлы шаблона:
6. Папка lang/ — локализация
Папка содержит языковые файлы для перевода компонента на разные языки. Для каждого языка создаётся отдельная подпапка (например, ru/, en/). Внутри неё располагаются файлы с теми же названиями, что и в корне компонента, содержащие массивы с переводами.
lang/
└── ru/
├── .description.php
├── .parameters.php
└── messages.php
Принцип MVC в компонентах Битрикс
Компоненты 1С-Битрикс реализуют принцип разделения логики и представления, схожий с паттерном MVC (Model-View-Controller):
| Компонент MVC | В Битрикс |
|---|---|
| Model (данные) |
Запросы к БД в component.php / class.php
|
| View (представление) |
template.php и файлы шаблона
|
| Controller (управление) |
component.php / class.php
|
Такой подход позволяет менять дизайн (шаблон), не затрагивая логику, и наоборот.
Ключевые переменные: $arParams и $arResult
В работе с компонентами вы постоянно будете встречать два ключевых массива:
Краткий чек-лист структуры компонента
| Файл/папка | Обязательность | Назначение |
|---|---|---|
component.php или class.php
|
Обязательный | Логика компонента |
.parameters.php
|
Опционально (если есть настройки) | Описание параметров для редактора |
.description.php
|
Опционально | Описание для визуального редактора |
templates/.default/template.php
|
Обязательный | HTML-шаблон вывода |
templates/.default/style.css
|
Опционально | Стили |
templates/.default/script.js
|
Опционально | JavaScript |
lang/
|
Опционально | Локализация |
Итог
Мы разобрали полную структуру компонента в 1С-Битрикс: от места размещения до каждого файла и папки. Теперь вы знаете:
-
где создавать свои компоненты (
/local/components/); -
какие файлы обязательны, а какие опциональны;
-
чем отличается
component.phpотclass.php; -
как работают
$arParamsи$arResult; -
зачем нужны
result_modifier.phpиcomponent_epilog.php.
В следующей статье мы перейдём к практике и создадим первый рабочий компонент «Hello, World!» с нуля. Подписывайтесь, чтобы не пропустить!
Есть вопросы или хотите дополнить статью? Пишите в комментариях — обсудим!