API seo-шаблонов элементов и разделов инфоблоков

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();
Кількість показів: 5212
12.03.2018

Повернення до списку

Если вам была полезна статья можете отблагодарить автора: