Засел за пример работы component_epilog.php и благодаря Максиму Смирнову разобрался, как же его скрещивать с result_modifier.php. Собственно, в документацию мы уже внесли, но напишу еще тут.
[spoiler]
UPD. Для версии модуля main до 10.0
1. $arResult в компоненте и шаблоне - это разные массивы. В шаблон поступает копия. Соответственно, что с ним ($arResult) в шаблоне не делай - компоненту без разницы.
2. Если надо засунуть в кеш результат работы result_modifier.php - делаем так:
3. Получим все это в component_epilog.php:
Вот и все.
UPD. После упорного общения с Сергеем Лещенко и комментария Вадима Думбравану более универсальный вариант (чтобы не учитывать версию модуля main):
[spoiler]
UPD. Для версии модуля main до 10.0
1. $arResult в компоненте и шаблоне - это разные массивы. В шаблон поступает копия. Соответственно, что с ним ($arResult) в шаблоне не делай - компоненту без разницы.
2. Если надо засунуть в кеш результат работы result_modifier.php - делаем так:
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); $cp = $this->__component; // объект компонента if (is_object($cp)) { // добавим в arResult компонента два поля - MY_TITLE и IS_OBJECT $cp->arResult['MY_TITLE'] = 'Мое название'; $cp->arResult['IS_OBJECT'] = 'Y'; $cp->SetResultCacheKeys(array('MY_TITLE','IS_OBJECT')); // сохраним их в копии arResult, с которой работает шаблон $arResult['MY_TITLE'] = $cp->arResult['MY_TITLE']; $arResult['IS_OBJECT'] = $cp->arResult['IS_OBJECT']; } |
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); global $APPLICATION; if (isset($arResult['MY_TITLE'])) $APPLICATION->SetTitle($arResult['MY_TITLE']); |
UPD. После упорного общения с Сергеем Лещенко и комментария Вадима Думбравану более универсальный вариант (чтобы не учитывать версию модуля main):
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); $cp = $this->__component; // объект компонента if (is_object($cp)) { // добавим в arResult компонента два поля - MY_TITLE и IS_OBJECT $cp->arResult['MY_TITLE'] = 'Мое название'; $cp->arResult['IS_OBJECT'] = 'Y'; $cp->SetResultCacheKeys(array('MY_TITLE','IS_OBJECT')); // сохраним их в копии arResult, с которой работает шаблон, если модуль main меньше 10.0 if (!isset($arResult['MY_TITLE'])) { $arResult['MY_TITLE'] = $cp->arResult['MY_TITLE']; $arResult['IS_OBJECT'] = $cp->arResult['IS_OBJECT']; } } |