🧱 Суть

component_epilog.php – специальный файл шаблона компонента, который выполняется после подключения template.php.

Он используется для действий, которые должны произойти после формирования HTML, например:

  • подключение дополнительных файлов;
  • установка заголовков страницы;
  • регистрация JavaScript;
  • изменение свойств страницы;
  • выполнение завершающего кода.

В отличие от result_modifier.php, этот файл не предназначен для подготовки данных к отображению.

📦 Проблема

Иногда после вывода компонента требуется выполнить дополнительные действия.

Например:

  • изменить заголовок страницы;
  • подключить JavaScript;
  • установить мета-теги;
  • передать данные другим компонентам.

Если делать это в template.php, логика отображения смешивается с логикой страницы.

✅ Решение

Использовать component_epilog.php для выполнения действий после вывода шаблона.

Так шаблон остаётся ответственным только за HTML.

💻 Код

Где находится файл

component_epilog.php располагается рядом с шаблоном:

templates/
└── cards/
    ├── template.php
    ├── result_modifier.php
    ├── component_epilog.php
    ├── style.css
    └── script.js

Файл является необязательным.

Если его нет – Битрикс просто завершает работу компонента.

Когда выполняется

Последовательность работы компонента:

IncludeComponent()


component.php


result_modifier.php


template.php


component_epilog.php


Конец работы компонента

Доступные переменные

В файле доступны:

$arResult
$arParams
$APPLICATION

Это позволяет использовать уже подготовленные данные и работать со страницей.

Изменение заголовка страницы

Например:

<?php
 
$APPLICATION->SetTitle("Новости");

После выполнения изменится заголовок страницы.

Установка свойств страницы

Можно установить произвольное свойство:

<?php
 
$APPLICATION->SetPageProperty(
    "description",
    "Последние новости компании"
);

Эти свойства затем используются в шаблоне сайта.

Подключение JavaScript

Например:

<?php
 
\Bitrix\Main\Page\Asset::getInstance()->addJs(
    SITE_TEMPLATE_PATH . "/js/news.js"
);

Файл будет подключён после работы компонента.

Подключение CSS

Аналогично можно добавить стили:

<?php
 
\Bitrix\Main\Page\Asset::getInstance()->addCss(
    SITE_TEMPLATE_PATH . "/css/news.css"
);

Использование данных компонента

Например:

<?php
 
if ($arResult["COUNT"] > 0) {
    $APPLICATION->SetPageProperty(
        "newsCount",
        $arResult["COUNT"]
    );
}

Здесь используются данные, подготовленные ранее компонентом.

Когда использовать

component_epilog.php подходит для:

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

Частые ошибки

Подготавливать данные для шаблона

Плохо:

$arResult["COUNT"] = count($arResult["ITEMS"]);

Этим должен заниматься result_modifier.php.

Выводить HTML

Плохо:

echo "<h1>Новости</h1>";

После вывода шаблона добавлять HTML обычно не имеет смысла.

Получать данные из базы

Плохо:

CIBlockElement::GetList(...);

Получение данных относится к component.php.

Выполнять бизнес-логику

component_epilog.php предназначен для завершающих действий, а не для основной логики компонента.

Путать с result_modifier.php

Это одна из самых распространённых ошибок.

  • result_modifier.php – изменяет $arResult до вывода.
  • component_epilog.php – выполняется после вывода шаблона.

🎯 Вывод

  • component_epilog.php выполняется после template.php
  • Используется для завершающих действий после работы компонента
  • Подходит для изменения свойств страницы и подключения ресурсов
  • Не предназначен для подготовки данных или вывода HTML
  • Вместе с component.php, result_modifier.php и template.php помогает разделить ответственность между этапами работы компонента

🔗 Связано