Битрикс. Работа с шаблонами SEO

01.09.2018

Теги: CMSSEOWeb-разработкаБитриксИнфоблокМетаТегиНастройкаРазделИнфоблокаШаблонЭлементИнфоблока

Шаблоны SEO данных можно задавать как для всего инфоблока (т.е. для всех его разделов и элементов), так и для конкретных разделов, или элементов нужного раздела. Настройка может быть сделана для всего инфоблока, а потом для конкретного раздела/элемента переопределена на свою персональную. Все эти настройки выполняются на закладке SEO формы создания/редактирования соответственно инфоблока, раздела или элемента.

Содержимое закладки SEO для инфоблока и для раздела полностью идентично. В ней задаются шаблоны заголовков, ключевых слов, описаний для разделов и для элементов, а также шаблоны тегов для изображений разделов и элементов. На закладке SEO формы редактирования элементов присутствуют только те настройки, которые касаются самих элементов и их изображений.

Кроме текста можно использовать специальные конструкции в фигурных скобках:

  • {=this.Code} — символьный код раздела/элемента
  • {=iblock.PreviewText} — описание инфоблока
  • {=this.sections.name} — названия родительских разделов
  • {=this.property.COLOR} — свойство инфоблока
  • {=lower this.Name} — приведет значение к нижнему регистру
  • {=concat this.sections.name " / "} — названия родительских разделов будут соединены с помощью слэша

Пример посложнее:

Купить {=this.Name} {=concat {=distinct this.catalog.sku.property.color ", "}} по низким
ценам. От {=min this.catalog.sku.price.BASE} до {=max this.catalog.sku.price.BASE}
Купить платье синее, зеленое, черное по низким ценам. От 1000 руб. до 2000 руб. 

Работа с шаблонами SEO свойств инфоблоков

Получить SEO шаблоны для инфоблока с идентификатором $iblockId:

$ipropIblockTemplates = new \Bitrix\Iblock\InheritedProperty\IblockTemplates($iblockId);
$templates = $ipropIblockTemplates->findTemplates();
print_r($templates);
Array
(
    [SECTION_META_KEYWORDS] => Array
        (
            [ID] => 37
            [CODE] => SECTION_META_KEYWORDS
            [TEMPLATE] => {=lower this.Name} {=lower iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => N
        )
    [SECTION_META_DESCRIPTION] => Array
        (
            [ID] => 38
            [CODE] => SECTION_META_DESCRIPTION
            [TEMPLATE] => {=this.Name}. {=iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => N
        )
    [SECTION_META_TITLE] => Array
        (
            [ID] => 41
            [CODE] => SECTION_META_TITLE
            [TEMPLATE] => {=this.Name}. {=iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => N
        )
    [ELEMENT_META_TITLE] => Array
        (
            [ID] => 42
            [CODE] => ELEMENT_META_TITLE
            [TEMPLATE] => {=this.Name}. {=parent.Name}. {=iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => N
        )
    [ELEMENT_META_DESCRIPTION] => Array
        (
            [ID] => 43
            [CODE] => ELEMENT_META_DESCRIPTION
            [TEMPLATE] => {=this.Name}. {=parent.Name}. {=iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => N
        )
    [ELEMENT_META_KEYWORDS] => Array
        (
            [ID] => 45
            [CODE] => ELEMENT_META_KEYWORDS
            [TEMPLATE] => {=lower this.Name} {=lower parent.Name} {=lower iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => N
        )
)

Получить SEO шаблоны для раздела с идентификатором $iblockSectionId:

$ipropSectionTemplates = new \Bitrix\Iblock\InheritedProperty\SectionTemplates($iblockId, $iblockSectionId);
$templates = $ipropSectionTemplates->findTemplates();
print_r($templates);
Array
(
    [SECTION_META_KEYWORDS] => Array
        (
            [ID] => 37
            [CODE] => SECTION_META_KEYWORDS
            [TEMPLATE] => {=lower this.Name} {=lower iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => Y
        )
    [SECTION_META_DESCRIPTION] => Array
        (
            [ID] => 38
            [CODE] => SECTION_META_DESCRIPTION
            [TEMPLATE] => {=this.Name}. {=iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => Y
        )
    [SECTION_META_TITLE] => Array
        (
            [ID] => 41
            [CODE] => SECTION_META_TITLE
            [TEMPLATE] => {=this.Name}. {=iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => Y
        )
    [ELEMENT_META_TITLE] => Array
        (
            [ID] => 42
            [CODE] => ELEMENT_META_TITLE
            [TEMPLATE] => {=this.Name}. {=parent.Name}. {=iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => Y
        )
    [ELEMENT_META_DESCRIPTION] => Array
        (
            [ID] => 43
            [CODE] => ELEMENT_META_DESCRIPTION
            [TEMPLATE] => {=this.Name}. {=parent.Name}. {=iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => Y
        )
    [ELEMENT_META_KEYWORDS] => Array
        (
            [ID] => 45
            [CODE] => ELEMENT_META_KEYWORDS
            [TEMPLATE] => {=lower this.Name} {=lower parent.Name} {=lower iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => Y
        )
)

Получить SEO шаблоны для элемента с идентификатором $iblockElementId:

$ipropElementTemplates = new \Bitrix\Iblock\InheritedProperty\ElementTemplates($iblockId, $iblockElementId);
$templates = $ipropElementTemplates->findTemplates();
print_r($templates);
Array
(
    [SECTION_META_KEYWORDS] => Array
        (
            [ID] => 37
            [CODE] => SECTION_META_KEYWORDS
            [TEMPLATE] => {=lower this.Name} {=lower iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => Y
        )
    [SECTION_META_DESCRIPTION] => Array
        (
            [ID] => 38
            [CODE] => SECTION_META_DESCRIPTION
            [TEMPLATE] => {=this.Name}. {=iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => Y
        )
    [SECTION_META_TITLE] => Array
        (
            [ID] => 41
            [CODE] => SECTION_META_TITLE
            [TEMPLATE] => {=this.Name}. {=iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => Y
        )
    [ELEMENT_META_TITLE] => Array
        (
            [ID] => 42
            [CODE] => ELEMENT_META_TITLE
            [TEMPLATE] => {=this.Name}. {=parent.Name}. {=iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => Y
        )
    [ELEMENT_META_DESCRIPTION] => Array
        (
            [ID] => 43
            [CODE] => ELEMENT_META_DESCRIPTION
            [TEMPLATE] => {=this.Name}. {=parent.Name}. {=iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => Y
        )
    [ELEMENT_META_KEYWORDS] => Array
        (
            [ID] => 45
            [CODE] => ELEMENT_META_KEYWORDS
            [TEMPLATE] => {=lower this.Name} {=lower parent.Name} {=lower iblock.PreviewText}
            [ENTITY_TYPE] => B
            [ENTITY_ID] => 5
            [INHERITED] => Y
        )
)

Изменить 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 свойств инфоблоков

Получение значений SEO для инфоблока с идентификатором $iblockId:

$ipropIblockValues = new \Bitrix\Iblock\InheritedProperty\IblockValues($iblockId);
print_r($ipropIblockValues->getValues());

Получить значения SEO для раздела с идентификатором $iblockSectionId:

$ipropSectionValues = new \Bitrix\Iblock\InheritedProperty\SectionValues($iblockId, $iblockSectionId);
print_r($ipropSectionValues->getValues());
Array
(
    [SECTION_META_KEYWORDS] => породы собак статьи о домашних животных
    [SECTION_META_DESCRIPTION] => Породы собак. Статьи о домашних животных
    [SECTION_META_TITLE] => Породы собак. Статьи о домашних животных
    [ELEMENT_META_TITLE] => Породы собак. Статьи. Статьи о домашних животных
    [ELEMENT_META_DESCRIPTION] => Породы собак. Статьи. Статьи о домашних животных
    [ELEMENT_META_KEYWORDS] => породы собак статьи статьи о домашних животных
)

Получить значения SEO для элемента с идентификатором $iblockElementId:

$ipropElementValues = new \Bitrix\Iblock\InheritedProperty\ElementValues($iblockId, $iblockElementId);
print_r($ipropElementValues->getValues());
Array
(
    [SECTION_META_KEYWORDS] => афганская борзая статьи о домашних животных
    [SECTION_META_DESCRIPTION] => Афганская борзая. Статьи о домашних животных
    [SECTION_META_TITLE] => Афганская борзая. Статьи о домашних животных
    [ELEMENT_META_TITLE] => Афганская борзая. Породы собак. Статьи о домашних животных
    [ELEMENT_META_DESCRIPTION] => Афганская борзая. Породы собак. Статьи о домашних животных
    [ELEMENT_META_KEYWORDS] => афганская борзая породы собак статьи о домашних животных
)

Сбросить кэш 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();

Поиск: CMS • SEO • Web-разработка • Битрикс • Инфоблок • Раздел инфоблока • Шаблон • Элемент инфоблока • Настройка • Мета теги

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.