Опять вывод мета используя поля UF_

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Очередной сайт на битрикс и надо вывести мета (title, description) для категорий, при этом чтоб не менялись мета в дочерних категориях.
Вскрытие показало что шаблон для категорий переносился вручную и битрикс об этом ничего не знает, что немного затрудняет доступ к шаблону.

Реализация вывода мета данных

Создал у раздела во вкладке «Доп. поля» (Дополнительные поля), два поля UF_SEO_TITLE, UF_SEO_DESC.
Теперь надо соответственно вывести их значение в title и description.

Нашел шаблон вывода категории

/bitrix/templates/тема/components/bitrix/catalog/.default/section.php

прописал в нем

<? 
. . . 
$dbSection = CIBlockSection::GetList(Array(), array("ID" => $arResult["VARIABLES"]["SECTION_ID"], "IBLOCK_ID" => $arParams["IBLOCK_ID"]), false ,Array("UF_*"));
if($arSection = $dbSection->GetNext()){
	$rain_title = $arSection["UF_SEO_TITLE"];
	$rain_desc = $arSection["UF_SEO_DESC"];
	if(!empty($rain_title)){
		$arResult["VARIABLES"]["UF_SEO_TITLE"] = $rain_title;		
	}
	if(!empty($rain_desc)){
		$arResult["VARIABLES"]["UF_SEO_DESC"] = $rain_desc;
	}
}
. . .
?>

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

/bitrix/templates/тема/components/bitrix/catalog/.default/component_epilog.php

Содержимое файла component_epilog.php

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

Файл эпилог сразу же подхватил битрикс и стал доступен на морде сайта при включенном «Режим правки».
После добавил уже и вывод мета.

Содержимое файла component_epilog.php

<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); global $APPLICATION; if (!empty($arResult["VARIABLES"]["UF_SEO_TITLE"])){ $APPLICATION->SetPageProperty("title", $arResult["VARIABLES"]["UF_SEO_TITLE"]);
	$APPLICATION->SetTitle($arResult["VARIABLES"]["UF_SEO_TITLE"]);	
}
if(!empty($arResult["VARIABLES"]["UF_SEO_DESC"])){
	$APPLICATION->SetPageProperty("description",$arResult["VARIABLES"]["UF_SEO_DESC"]);
}
?>

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *