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

665 Bitrix

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Находим блок вывода нашего инфоблока, и приступаем к редактированию 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 -----

Оцените статью
Добавить комментарий

  1. Aleks

    супер, добавил на сайт и все заработало
    спасибо

    Ответить
  2. Davidteaky

    Вы попали в самую точку. В этом что-то есть и это хорошая идея. Я Вас поддерживаю.

    ——
    виртуальный номер телефона украина

    Ответить