c 14-й версии модуля "Информационные блоки" появилась возможность автоматического создания мета-данных для элементов и разделов инфоблока на основании шаблонов.
Получение этих данных в типовых шаблонах компонентов уже достаточно давно реализовано, но если нужно реализовать получение собственными средствами, для этого можно воспользоваться API.
API которые используется в SEO инфобоков расположены в директории:
\bitrix\modules\iblock\lib\inheritedproperty\
Получение значений SEO для инфоблока с идентификатором в переменной $iblockId:
$ipropIblockValues = new \Bitrix\Iblock\InheritedProperty\IblockValues($iblockId) print_r($ipropIblockValues->getValues());
Получить поля для элемента инфоблока можно так:
CModule::IncludeModule("iblock"); $ipropValues = new \Bitrix\Iblock\InheritedProperty\ElementValues( $arResult["IBLOCK_ID"], // ID инфоблока $arResult["ID"] // ID элемента ); $arResult['IPROPERTY_VALUES'] = $ipropValues->getValues();
Получить значения полей для раздела можно так:
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(); }
Изменить SEO шаблоны для инфоблока с идентификатором в переменной $iblockId:
$ipropIblockTemplates = new \Bitrix\Iblock\InheritedProperty\IblockTemplates($iblockId); $templates = $ipropIblockTemplates->findTemplates(); $newTemplates=array('SECTION_META_TITLE'=>$templates['SECTION_META_TITLE']['TEMPLATE']." дополнительный текст - {=this.Name}"); $ipropIblockTemplates->set($newTemplates);
Изменить SEO шаблоны для раздела с идентификатором в переменной $iblockSectionId:
$ipropSectionTemplates = new \Bitrix\Iblock\InheritedProperty\SectionTemplates($iblockId,$iblockSectionId); $templates = $ipropSectionTemplates->findTemplates(); $newTemplates=array('SECTION_META_TITLE'=>$templates['SECTION_META_TITLE']['TEMPLATE']." дополнительный текст - {=this.Name}"); $ipropSectionTemplates->set($newTemplates);
Изменить SEO шаблоны для элемента с идентификатором в переменной $iblockElementId:
$ipropElementTemplates = new \Bitrix\Iblock\InheritedProperty\ElementTemplates($iblockId,$iblockElementId); $templates = $ipropElementTemplates->findTemplates(); $newTemplates=array('ELEMENT_META_TITLE'=>$templates['ELEMENT_META_TITLE']['TEMPLATE']." дополнительный текст - {=this.Name}"); $ipropElementTemplates->set($newTemplates);
Удалить SEO шаблоны для инфоблока с идентификатором в переменной $iblockId:
$ipropIblockTemplates = new \Bitrix\Iblock\InheritedProperty\IblockTemplates($iblockId); $ipropIblockTemplates->delete();
Удалить SEO шаблоны для раздела с идентификатором в переменной $iblockSectionId:
$ipropSectionTemplates = new \Bitrix\Iblock\InheritedProperty\SectionTemplates($iblockId,$iblockSectionId); $ipropSectionTemplates->delete();
Удалить SEO шаблоны для элемента с идентификатором в переменной $iblockElementId:
$ipropElementTemplates = new \Bitrix\Iblock\InheritedProperty\ElementTemplates($iblockId,$iblockElementId); $ipropElementTemplates->delete();
Сбросить кеш SEO для инфоблока с идентификатором в переменной $iblockId:
$ipropIblockValues = new \Bitrix\Iblock\InheritedProperty\IblockValues($iblockId); $ipropIblockValues->clearValues();
Сбросить кеш SEO для раздела инфоблока с идентификатором в переменной $iblockSectionId:
$ipropSectionValues = new \Bitrix\Iblock\InheritedProperty\IblockSectionValues($iblockId,$iblockSectionId); $ipropSectionValues->clearValues();
Сбросить кеш SEO для элемента инфоблока с идентификатором в переменной $iblockElementId:
$ipropElementValues = new \Bitrix\Iblock\InheritedProperty\IblockElementValues($iblockId,$iblockElementId); $ipropElementValues->clearValues();