Полный цикл в digital

Передать данные в component_epilog.php

Иногда требуется в шаблоне компонента дополучить данные и перенести их в component_epilog.php, например возьмем стандартный компонент bitrix:news.list. Даже если мы добавим новый ключ в массив $arResult и разместим в нем наши данные:

<?
$arResult['TEXT'] = 'Hello world!';

Данные не попадут в component_epilog.php, потому что компонент bitrix:news.list не добавляет в кэш все данные, он кэширует вывод всего HTML-кода, который выводит шаблон и дополнительно кэширует некоторые, но не все элементы массива $arResult.

Пример добавления данных в кэш компонента

Для того, что бы нужные данные попали в component_epilog.php, их нужно добавить вручную. Нам нужно, что бы наши данные попали в дата-кэш компонента, который отвечает за массив данных компонента.

Для нашего примера $arResult['TEXT'] в result_modifier.php добавим следующие строки:

result_modifier.php<?
$arResult['TEXT'] = 'Hello world!';
$this->__component->SetResultCacheKeys(['TEXT']);

Здесь мы добавляем новый ключ TEXT в массив $arResult и используем метод SetResultCacheKeys() объекта компонента, чтобы указать, что TEXT должен сохраняться в кэше и быть доступен в component_epilog.php.

Передача нескольких значений

Если нужно передать несколько значений, процесс аналогичен. Предположим, нужно передать значения из PREVIEW_PICTURE, DETAIL_PICTURE и PREVIEW_TEXT. В result_modifier.php добавляем следующие строки:

result_modifier.php<?
// объект компонента
$cp = $this->__component;

if (is_object($cp))
{
    $cp->arResult['LOGO_SRC'] = $arResult['PREVIEW_PICTURE']['SRC'];
    $cp->arResult['SLIDER_SRC'] = $arResult['DETAIL_PICTURE']['SRC'];
    $cp->arResult['DESCR'] = $arResult['PREVIEW_TEXT'];
    $cp->SetResultCacheKeys(['LOGO_SRC', 'SLIDER_SRC', 'DESCR']);
}

Использование данных в component_epilog.php

В файле component_epilog.php данные из $arResult можно использовать следующим образом:

component_epilog.php<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

// доступ к данным
echo $arResult['LOGO_SRC'];
echo $arResult['SLIDER_SRC'];
echo $arResult['DESCR'];
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг