В общем беда в следующем, есть инфоблок (iblock) у которого есть разделы (section), и надо этим разделам назначить определенные мета данные (title, мета-описание, мета-ключи).
Прикол в том, что у битрикса есть компонент «SEO», который позволяет задавать разделам и элементам мета-данные, как шаблонно с учетом параметров так и без параметров, НО эти мета применяются и к подразделам и элементам, а этого как раз и не надо.
Теперь к делу.
Реализация создания и вывода пользовательских полей «UF_»
Вывод мета делаем по пользовательским полям (UF_), и если эти поля заполнены то выводим с них мета, если пустые то выводим как обычно.
С начало создаем сами поля, у нас будут такие: UF_SEO_TITLE, UF_SEO_DESC, UF_SEO_KEY
Выбираем любой раздел в нужном инфоблоке и переходим в режим редактирования
На вкладке «Доп. поля» переходим по ссылке «Добавить пользовательское свойство», и переходим в настройки нового поля
Выбираем тип «Строка», указываем название нового поля UF_SEO_TITLE и прописываем языковые настройки.
Жмем «Сохранить» и поле создано. Так же создаем и остальные поля. В результате должно получится что-то типа такого
Далее переходим к выводу полей.
Открываем страницу раздела на лице сайта и включаем режим правки (верхний правый угол панели управления)
Находим блок вывода нашего инфоблока, и приступаем к редактированию 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 -----







супер, добавил на сайт и все заработало
спасибо
Вы попали в самую точку. В этом что-то есть и это хорошая идея. Я Вас поддерживаю.
——
виртуальный номер телефона украина