Уникальный заголовок страницы из свойств элемента

Уникальный заголовок страницы из свойств элемента
Порой хочется, чтобы мета описание страницы было особенным. К примеру, взять первые 80 символов детального текста и поместить в description. Но если решить проблему "в лоб", то возникнут проблемы с композитом.
Уже ни раз сталкивались с жалобой программистов на то, что файл компонента result_modifier.php исполняется "раз через раз". Поэтому если задавать в нём мета описание страницы, то возникнут проблемы с пересоздающимся композитным кешем.

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

Реальный пример
Необходимо сделать автоматическое создание title и description из названия и детального описания на детальной странице просмотра элемента. Причём description должно и состоять из названия элемента и 50 символов описания, а title должен быть обрезан на 60 символах. При такой задаче не поможет встроенное SEO в панели администратора - придётся программировать.

В result_modifier.php формируем строку, которая будет появляться в meta description:

$arResult['TITLE_META'] = substr($arResult['NAME'], 0, 60);
$arResult['DESCR_META'] = $arResult['NAME'] . ' - ' . substr($arResult["DETAIL_TEXT"], 0, 50);

// кешируем данные для передачи в component_epilog.php
$cp = $this->__component;
if (is_object($cp))
{
$cp->arResult['TITLE_META'];
$cp->arResult['DESCR_META'];
$cp->SetResultCacheKeys(array('TITLE_META', 'DESCR_META' ));
}

Закешированные данные передадутся в component_epilog.php и только там мы ставим их в мета описание:

$APPLICATION->SetPageProperty("title", $arResult['TITLE_META']);
$APPLICATION->SetPageProperty("description", $arResult['DESCR_META']);

Если сделать SetPageProperty в result_modifier то композитный кеш будет пересоздавать при каждом хите то с правильным мета описанием, то с стандартным. Одним словом, система будет давать сбои, если задавать meta в result_modifier.

Как заказать сайт?
Напишите нам по адресу order@pervaja.com, либо через форму ниже

Закажите наши услуги прямо сейчас!

Напишите нам на email order@pervaja.com или в форму ниже

Заказать! Секунду...
Спасибо!
Мы свяжемся с Вами по указанному адресу