Caribasius
9/25/2017 - 7:28 AM

SetResultCacheKeys

SetResultCacheKeys

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
global $APPLICATION;

$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'];

    $APPLICATION->SetTitle($cp->arResult['MY_TITLE']); // не будет работать на каждом хите: 
//отработает только первый раз, затем будет все браться из кеша и вызова $APPLICATION->SetTitle()
// не будет. Поэтому изменение title делается в component_epilog, который выполняется на каждом хите.

}
?>
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

global $APPLICATION;

if (isset($arResult['MY_TITLE']))
    $APPLICATION->SetTitle($arResult['MY_TITLE']);
?>