InheritedProperty: шаблоны SEO инфоблока, раздела и элемента
Три уровня наследования
API \Bitrix\Iblock\InheritedProperty разделяет шаблоны по носителю: весь инфоблок, конкретный раздел или элемент. Для каждого уровня есть свой класс шаблонов с одинаковым паттерном findTemplates() → правка массива → set() или delete().
Инфоблок
use Bitrix\Iblock\InheritedProperty\IblockTemplates;
$gate = new IblockTemplates($iblockId);
$current = $gate->findTemplates();
$patch = [
'SECTION_META_TITLE' => $current['SECTION_META_TITLE']['TEMPLATE'] . ' — {=this.Name}',
];
$gate->set($patch);Раздел
use Bitrix\Iblock\InheritedProperty\SectionTemplates;
$gate = new SectionTemplates($iblockId, $sectionId);
$current = $gate->findTemplates();
$gate->set([
'SECTION_META_TITLE' => $current['SECTION_META_TITLE']['TEMPLATE'] . ' | доп. суффикс',
]);Элемент
use Bitrix\Iblock\InheritedProperty\ElementTemplates;
$gate = new ElementTemplates($iblockId, $elementId);
$current = $gate->findTemplates();
$gate->set([
'ELEMENT_META_TITLE' => $current['ELEMENT_META_TITLE']['TEMPLATE'] . ' — {=this.Name}',
]);Сброс шаблонов
delete() на соответствующем объекте убирает переопределения на выбранном уровне — полезно при откате миграций или очистке тестовых данных.
(new IblockTemplates($iblockId))->delete();
(new SectionTemplates($iblockId, $sectionId))->delete();
(new ElementTemplates($iblockId, $elementId))->delete();Смежные темы
Значения вычисленных SEO-полей и работа с функциями в фигурных скобках описаны в соседних заметках про значения inherited properties и кастомные функции шаблона.
Итог
Три класса с симметричным API закрывают массовые правки и точечные правки на разделе/элементе без ручного ковыряния в b_iblock_element_property.
Не хотите копаться сами?
Починю за 1-3 дня. Без предоплаты — оплата по результату.
15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии