🧱 Суть
Шаблон компонента отвечает только за отображение данных, подготовленных компонентом.
Во время работы компонента:
- выполняется бизнес-логика;
- данные помещаются в
$arResult; - подключается шаблон (
template.php); - шаблон формирует HTML.
Такое разделение соответствует принципу разделения логики и представления (MVC).
📦 Проблема
Если получать данные и формировать HTML в одном файле:
- код становится трудно читать;
- появляется смешение логики и отображения;
- шаблон сложно переиспользовать;
- изменение внешнего вида требует изменения бизнес-логики.
✅ Решение
Всю работу с данными выполнять в компоненте, а шаблон использовать только для отображения содержимого массива $arResult.
💻 Код
Где находится шаблон
Каждый компонент может содержать несколько шаблонов.
Структура:
/components/
└── company/
└── weather/
└── templates/
├── .default/
│ └── template.php
└── cards/
└── template.phpДля собственных компонентов рекомендуется использовать:
/local/components/Основной файл шаблона
Главный файл шаблона:
templates/.default/template.phpИменно он отвечает за вывод HTML.
Что доступно внутри шаблона
В шаблоне доступны основные переменные:
$arResult
$arParams
$APPLICATION
$thisЧаще всего используются:
$arResult– данные компонента;$arParams– параметры компонента.
Использование $arResult
Компонент подготавливает данные:
$arResult["ITEMS"] = $items;Шаблон выводит их:
<?php foreach ($arResult["ITEMS"] as $item): ?>
<h2><?= $item["NAME"] ?></h2>
<?php endforeach; ?>Шаблон не должен самостоятельно получать данные из базы.
Использование $arParams
Шаблон также может учитывать параметры компонента.
Например:
<?php if ($arParams["SHOW_DATE"] === "Y"): ?>
<span><?= $item["DATE_ACTIVE_FROM"] ?></span>
<?php endif; ?>Это позволяет гибко управлять отображением без изменения шаблона.
Выбор шаблона
Шаблон выбирается вторым аргументом метода IncludeComponent().
Стандартный шаблон:
$APPLICATION->IncludeComponent(
"bitrix:news.list",
"",
[]
);Или собственный:
$APPLICATION->IncludeComponent(
"bitrix:news.list",
"cards",
[]
);Будет использована папка:
templates/cards/Копирование шаблона стандартного компонента
Если необходимо изменить внешний вид стандартного компонента, рекомендуется создать собственный шаблон.
Например:
/local/templates/my_template/components/
bitrix/
news.list/
cards/
template.phpТак изменения не будут потеряны после обновления Битрикса.
Дополнительные файлы шаблона
Кроме template.php шаблон может содержать:
template.php
style.css
script.js
result_modifier.php
component_epilog.phpНазначение файлов:
style.css– стили шаблона;script.js– JavaScript;result_modifier.php– дополнительная обработка$arResultперед выводом;component_epilog.php– код, выполняемый после вывода шаблона.
result_modifier.php
Этот файл позволяет изменить данные перед отображением.
Например:
$arResult["COUNT"] = count($arResult["ITEMS"]);После этого значение станет доступно в template.php.
Такой подход удобен, если требуется подготовить данные именно для представления.
Повторное использование
Один компонент может использовать разные шаблоны.
Например:
.default
cards
table
sliderПри этом логика компонента остаётся одинаковой, меняется только отображение.
Частые ошибки
Получать данные в template.php
Плохо:
$result = CIBlockElement::GetList(...);Шаблон должен только отображать уже подготовленные данные.
Изменять стандартный шаблон
Не рекомендуется редактировать файлы в:
/bitrix/components/После обновления изменения будут потеряны.
Лучше создать собственный шаблон.
Выполнять сложную бизнес-логику
Плохо:
if (...) {
// получение данных
}Логика должна находиться в component.php.
Дублировать HTML
Если один и тот же шаблон используется несколько раз, лучше вынести повторяющиеся части в отдельные файлы или компоненты.
Игнорировать $arParams
Если отображение зависит от настроек компонента, следует использовать параметры, а не изменять шаблон вручную.
🎯 Вывод
- Шаблон отвечает только за отображение данных
- Основной файл шаблона –
template.php - Данные доступны через
$arResult, настройки – через$arParams - Один компонент может иметь несколько шаблонов
- Для изменения стандартных компонентов рекомендуется создавать собственные шаблоны
- Разделение логики и представления делает код проще в сопровождении
🔗 Связано
- Битрикс. Компоненты Bitrix: что это и как работают
- Битрикс. Вызов компонентов через IncludeComponent()
- Битрикс. Параметры компонентов
- Битрикс. Жизненный цикл страницы Bitrix
- footer
- Битрикс. Кеширование компонентов
- Битрикс. Архитектура 1С-Битрикс и структура проекта
- PHP. Массивы: работа, перебор и полезные функции