Создание и вывод мета данных на основе пользовательских полей (Bitrix))

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Загрузка...

В общем беда в следующем, есть инфоблок (iblock) у которого есть разделы (section), и надо этим разделам назначить определенные мета данные (title, мета-описание, мета-ключи).

Прикол в том, что у битрикса есть компонент «SEO», который позволяет задавать разделам и элементам мета-данные, как шаблонно с учетом параметров так и без параметров, НО эти мета применяются и к подразделам и элементам, а этого как раз и не надо.

Теперь к делу.

Реализация создания и вывода пользовательских полей «UF_»

Вывод мета делаем по пользовательским полям (UF_), и если эти поля заполнены то выводим с них мета, если пустые то выводим как обычно.

С начало создаем сами поля, у нас будут такие: UF_SEO_TITLE, UF_SEO_DESC, UF_SEO_KEY

Выбираем любой раздел в нужном инфоблоке и переходим в режим редактирования

На вкладке «Доп. поля» переходим по ссылке «Добавить пользовательское свойство», и переходим в настройки нового поля

Выбираем тип «Строка», указываем название нового поля UF_SEO_TITLE и прописываем языковые настройки.

Жмем «Сохранить» и поле создано. Так же создаем и остальные поля. В результате должно получится что-то типа такого

Далее переходим к выводу полей.

Открываем страницу раздела на лице сайта и включаем режим правки (верхний правый угол панели управления)

Находим блок вывода нашего инфоблока, и приступаем к редактированию result_modifier.php.

Конечно если вы знаете где лежит компонент вывода инфоблока, то можно непосредственно к нему перейти через панель администрирования «Файлы и папки».

переход к файлу result_modifier.php

Далее вставляем в код следующие строчки


// begin ------
$arFilter = array("IBLOCK_ID" => $arResult['IBLOCK_ID'], "ACTIVE"=>"Y", "ID" =>$arResult['ID']);
$rsResult = CIBlockSection::GetList(array("SORT" => "ASC"), $arFilter, false,
array("ID","IBLOCK_ID","IBLOCK_SECTION_ID","UF_*"));

if($arSection = $rsResult -> GetNext()){
$arResult["UF_SEO_TITLE"] = $arSection["UF_SEO_TITLE"];
$arResult["UF_SEO_DESC"] = $arSection["UF_SEO_DESC"];
$arResult["UF_SEO_KEY"] = $arSection["UF_SEO_KEY"];
}

// создаем переменные с содержимым наших пользовательских полей
if (!empty($arResult["UF_SEO_TITLE"])){
$arResult['IPROPERTY_VALUES']['SECTION_META_TITLE'] = $arResult["UF_SEO_TITLE"];
}else{

}
if (!empty($arResult["UF_SEO_DESC"])){
$arResult['IPROPERTY_VALUES']['SECTION_META_DESCRIPTION'] = $arResult["UF_SEO_DESC"];
}
if (!empty($arResult["UF_SEO_KEY"])){
$APPLICATION->SetPageProperty("keywords", $arResult["UF_SEO_KEY"]);
}
// end -----

2 комментария

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

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