В общем беда в следующем, есть инфоблок (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 -----
супер, добавил на сайт и все заработало
спасибо
Вы попали в самую точку. В этом что-то есть и это хорошая идея. Я Вас поддерживаю.
——
виртуальный номер телефона украина