SEO оптимизация сегодня является неотъемлемой частью любого проекта, желающего продвинуться среди различных систем поиска. Множество разработчиков занимающиеся разработкой своих систем управлений сайтами учли этот факт, оснащая свои приложения нужным функционалом. Не стали исключением и разработчики платформы Битрикс. Начиная с версии 14.0.0 в модуле Информационные блоки доступна возможность автоматического создания метаданных для элементов и разделов инфоблока. Информацию о настройках можно почитать вот тут, мы же рассмотрим пример использования SEO данных посредством API.
API которые используется в SEO инфобоков расположены в директории:
\bitrix\modules\iblock\lib\inheritedproperty\
SEO поля элементов инфоблока можно заполнять посредством API, для этого при обновлении в массиве полей необходимо добавить ключ «IPROPERTY_TEMPLATES«:
... "IPROPERTY_TEMPLATES" => array ( "SECTION_META_TITLE" => "", "SECTION_META_KEYWORDS" => "", "SECTION_META_DESCRIPTION" => "", "SECTION_PAGE_TITLE" => "", "ELEMENT_META_TITLE" => "", "ELEMENT_META_KEYWORDS" => "", "ELEMENT_META_DESCRIPTION" => "", "ELEMENT_PAGE_TITLE" => "", "SECTION_PICTURE_FILE_ALT" => "", "SECTION_PICTURE_FILE_TITLE" => "", "SECTION_PICTURE_FILE_NAME" => "", "SECTION_DETAIL_PICTURE_FILE_ALT" => "", "SECTION_DETAIL_PICTURE_FILE_TITLE" => "", "SECTION_DETAIL_PICTURE_FILE_NAME" => "", "ELEMENT_PREVIEW_PICTURE_FILE_ALT" => "", "ELEMENT_PREVIEW_PICTURE_FILE_TITLE" => "", "ELEMENT_PREVIEW_PICTURE_FILE_NAME" => "", "ELEMENT_DETAIL_PICTURE_FILE_ALT" => "", "ELEMENT_DETAIL_PICTURE_FILE_TITLE" => "", "ELEMENT_DETAIL_PICTURE_FILE_NAME" => "", ), ...
Получить поля SEO для элемента можно так:
CModule::IncludeModule("iblock"); $ipropValues = new \Bitrix\Iblock\InheritedProperty\ElementValues( $arCurElem["IBLOCK_ID"], // ID инфоблока $arCurElem["ID"] // ID элемента ); $arElMetaProp = $ipropValues->getValues(); echo '<pre>'; print_r ($arElMetaProp); echo '</pre>';
Поля SEO для раздела можно получить похожим способом:
CModule::IncludeModule("iblock"); $rsSection = CIBlockSection::GetList( array(), array( "IBLOCK_ID"=>$arParams['IBLOCK_ID'], "ACTIVE"=>"Y", "=CODE"=>$arParams["SECTION_CODE"]), false ); if($arSection = $rsSection->GetNext()){ $ipropValues = new \Bitrix\Iblock\InheritedProperty\SectionValues( $arSection["IBLOCK_ID"], $arSection["ID"] ); $arSection["IPROPERTY_VALUES"] = $ipropValues->getValues(); echo "<pre>"; print_r($arSection); echo '</pre>'; }
SEO поля элементов инфоблока можно заполнять посредством API, для этого при обновлении в массиве полей необходимо добавить ключ «IPROPERTY_TEMPLATES«:
Где его нужно добавлять?
Получить поля SEO для элемента можно так:
Где нужно разместить данный код?
IPROPERTY_TEMPLATES добавляется при обновлении полей элемента.
Код получения SEO-полей можно разместить в компоненте, где происходит выборка элементов.
а как установить поля сео для информационного блока?