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();
Количество показов: 7384
12.03.2018

Возврат к списку

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

0x16Df809287333C49D3A237296C6248A6c08702Bc

Разработка сайта

Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...

Сопровождение сайта

Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение

Работы по сайту

Вы можете подать заявку на выполнение определенного объема работ по сайту. Опишите в заявке объем работ. Это может быть разработка какого-то нового функционала, доработки по имеющемуся функционалу, доработки под требования сео-специалистов. На основании заявки вам будет сформирован бюджет работ, а также названы сроки на выполнение тех или иных работ.