🧱 Суть
result_modifier.php – специальный файл шаблона компонента, который выполняется после получения данных, но до подключения template.php.
Он используется для подготовки данных к отображению:
- форматирования;
- вычисления дополнительных значений;
- изменения структуры массива;
- подготовки данных, необходимых только шаблону.
Таким образом логика отображения остаётся простой, а компонент не перегружается кодом, специфичным для конкретного шаблона.
📦 Проблема
Без result_modifier.php часто возникает одна из двух ситуаций:
- сложная подготовка данных выполняется прямо в
template.php; - логика, нужная только одному шаблону, попадает в
component.php.
В результате нарушается разделение ответственности:
- компонент начинает зависеть от конкретного шаблона;
- шаблон становится перегруженным PHP-кодом.
✅ Решение
Использовать result_modifier.php для подготовки данных перед отображением.
Тогда:
- компонент отвечает за получение данных;
result_modifier.php– за их подготовку;template.php– только за вывод HTML.
💻 Код
Где находится файл
result_modifier.php располагается рядом с шаблоном:
templates/
└── cards/
├── template.php
├── result_modifier.php
├── style.css
└── script.jsЕсли файла нет – Битрикс просто пропускает этот этап.
Когда выполняется
Жизненный цикл выглядит так:
IncludeComponent()
│
▼
component.php
│
▼
$arResult заполнен
│
▼
result_modifier.php
│
▼
template.php
│
▼
HTMLТаким образом result_modifier.php уже имеет доступ ко всем данным компонента.
Доступные переменные
В файле доступны:
$arResult
$arParamsНапример:
$count = count($arResult["ITEMS"]);После изменения массива новые данные автоматически станут доступны в template.php.
Добавление новых данных
Например, можно вычислить количество элементов:
<?php
$arResult["COUNT"] = count($arResult["ITEMS"]);В шаблоне:
<p>Всего элементов: <?= $arResult["COUNT"] ?></p>Форматирование данных
Допустим, требуется изменить формат даты.
<?php
foreach ($arResult["ITEMS"] as &$item) {
$item["DATE_FORMATTED"] = date(
"d.m.Y",
strtotime($item["DATE_ACTIVE_FROM"])
);
}В шаблоне:
<?= $item["DATE_FORMATTED"] ?>Теперь template.php не содержит лишней логики.
Добавление вычисляемых полей
Например:
<?php
foreach ($arResult["ITEMS"] as &$item) {
$item["IS_NEW"] =
strtotime($item["DATE_ACTIVE_FROM"]) >
strtotime("-7 days");
}В шаблоне:
<?php if ($item["IS_NEW"]): ?>
<span>Новинка</span>
<?php endif; ?>Подготовка изображений
Часто в result_modifier.php получают дополнительные данные для изображений.
Например:
$item["IMAGE"] = CFile::GetPath($item["PREVIEW_PICTURE"]);После этого шаблон использует уже готовый путь.
Когда использовать
result_modifier.php подходит для:
- форматирования дат;
- вычисления новых полей;
- подготовки изображений;
- сортировки данных;
- преобразования массивов;
- подготовки данных исключительно для конкретного шаблона.
Частые ошибки
Получать данные из базы
Плохо:
CIBlockElement::GetList(...);Получением данных должен заниматься компонент (component.php).
Размещать HTML
Плохо:
echo "<h1>Новости</h1>";result_modifier.php ничего не выводит.
Его задача – только изменить $arResult.
Выполнять тяжёлую бизнес-логику
Если логика нужна независимо от шаблона, ей место в component.php.
result_modifier.php предназначен только для подготовки данных к отображению.
Дублировать вычисления
Если одно и то же значение используется несколько раз в шаблоне, лучше вычислить его один раз в result_modifier.php.
Изменять $arParams
Обычно параметры компонента считаются входными данными и изменять их не рекомендуется.
Лучше добавлять новые значения в $arResult.
🎯 Вывод
result_modifier.phpвыполняется междуcomponent.phpиtemplate.php- Используется для подготовки данных к отображению
- Позволяет разгрузить
template.php - Работает с массивами
$arResultи$arParams - Не должен получать данные из базы и выводить HTML
- Помогает разделить получение данных, их подготовку и отображение
🔗 Связано
- Битрикс. Шаблоны компонентов
- Битрикс. Переопределение шаблонов компонентов
- Битрикс. Компоненты Bitrix: что это и как работают
- Битрикс. Вызов компонентов через IncludeComponent()
- Битрикс. Параметры компонентов
- Битрикс. Жизненный цикл страницы Bitrix
- PHP. Работа с массивами: работа, перебор и полезные функции
- PHP. Работа с датой и временем (DateTime)