Битрикс: передача переменной из шаблона в epilog
2016-02-10
Задача была в том чтобы через epilog передать значение title взятое из компонента. Не знаю, правильный ли я путь выбрал, но это работает.
component_epilog.php в битриксе отрабатывает последним, т.е. после всех компонентов и даже после кеша. Это удобн тем, что позволяет обходить некоторые баги кеширования.
Но в данном случае его особенность позволила перезаписать переменную в title.
Получаем от элемента инфоблока SECTION пользовательское поле UF_CUSTOMTITLE с новым значением для title и записываем его в переменную $GLOBAL['titel'].
$uf_arresult = CIBlockSection::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID" => $uf_iblock_id, "ID" => $arResult[ID]), false, array('UF_*'));
if($uf_value = $uf_arresult->GetNext())
{
if(strlen($uf_value['~UF_CUSTOMTITLE']) > 0)
{
$parameter['cat_id'] = $uf_value;
$GLOBALS['titel'] = $uf_value['UF_CUSTOMTITLE']; // передаем в component_epilog, там задаем тайтл
}
}
В эпилоге просто можно вывести
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
global $APPLICATION;
$APPLICATION->SetPageProperty('title', $GLOBALS['titel']);
$APPLICATION->SetTitle($GLOBALS['titel']);
// var_dump($GLOBALS);
?>