г.Брянск, Пн-Пт 9:00 – 18:00, Сб 10:00 – 17:00

Как сделать микроразметку OpenGraph для элементов и разделов инфоблока на Bitrix API

Автор:

Дата публикации:

Как сделать микроразметку OpenGraph для элементов и разделов инфоблока на Bitrix API

Зачем нужно на детальной странице карточки товара или на странице раздела выводить SEO-данные, если они автоматически выводятся в секции ? Спросите вы. На самом деле эти данные можно использовать для микроразметки Open Graph.

Для детальной страницы статьи, товара и т.д. код выглядит так:


$ipropValues = new \Bitrix\Iblock\InheritedProperty\ElementValues($arParams["IBLOCK_ID"], $arResult["ID"]);
$IPROPERTY = $ipropValues->getValues();

В метод ElementValues мы передаем в качестве первого параметра id инфоблока, а в качестве второго параметра ID текущего элемента. В итоге в массиве $IPROPERTY будет массив с заполненными SEO-данными, которые можно использовать в микроразметке Open Graph:


$APPLICATION->SetPageProperty("og:image", "https://доменсайта/local/templates/.default/images/logo.svg");
$APPLICATION->SetPageProperty("og:description", $IPROPERTY["ELEMENT_META_DESCRIPTION"]);
$APPLICATION->SetPageProperty("og:type", "website");
$APPLICATION->SetPageProperty("og:url", "https://доменсайта".$arResult["DETAIL_PAGE_URL"]);
$APPLICATION->SetPageProperty("og:title", $IPROPERTY["ELEMENT_META_TITLE"]);

В ключе ELEMENT_META_TITLE находится SEO-title, в ключе ELEMENT_META_DESCRIPTION SEO-описание, в ключе ELEMENT_META_KEYWORDS ключевые слова.

На странице раздела инфоблока вместо метода ElementValues нужно использовать метод SectionValues:


$ipropValues = new \Bitrix\Iblock\InheritedProperty\SectionValues($arParams["IBLOCK_ID"], $arResult["VARIABLES"]["SECTION_ID"]);
$IPROPERTY = $ipropValues->getValues();

Здесь соответственно вторым параметром нужно передать ID раздела. Если $arResult["VARIABLES"]["SECTION_ID"] пусто, то используем $arResult["VARIABLES"]["SECTION_CODE"] для определения ID раздела:


$rsSections = CIBlockSection::GetList(array(),array('IBLOCK_ID' => $arParams ['IBLOCK_ID'], '=CODE' => $arResult['VARIABLES']['SECTION_CODE']));
$arSection = $rsSections->GetNext();

Данный код используем до предыдущего. И теперь, чтобы сделать разметку раздела OpenGraph делаем следующий код:


$APPLICATION->SetPageProperty("og:image", "https://доменсайта/local/templates/.default/images/logo.svg");
$APPLICATION->SetPageProperty("og:description", $IPROPERTY["SECTION_META_DESCRIPTION"]);
$APPLICATION->SetPageProperty("og:type", "website");
$APPLICATION->SetPageProperty("og:url", "https://домен сайта".$arSection["SECTION_PAGE_URL"]);
$APPLICATION->SetPageProperty("og:title", $IPROPERTY["SECTION_META_TITLE"]);

В ключе SECTION_META_TITLE находится SEO-title, в ключе SECTION_META_DESCRIPTION SEO-описание, в ключе SECTION_META_KEYWORDS ключевые слова.

241027, Россия, Брянская область, поселок Путевка, улица Рослальская, дом 8, кв.121
Телефон: +7 (950) 692-91-71

Зачем нужно на детальной странице карточки товара или на странице раздела выводить SEO-данные, если они автоматически выводятся в секции ? Спросите вы. На самом деле эти данные можно использовать для микроразметки Open Graph.

Для детальной страницы статьи, товара и т.д. код выглядит так:


$ipropValues = new \Bitrix\Iblock\InheritedProperty\ElementValues($arParams["IBLOCK_ID"], $arResult["ID"]);
$IPROPERTY = $ipropValues->getValues();

В метод ElementValues мы передаем в качестве первого параметра id инфоблока, а в качестве второго параметра ID текущего элемента. В итоге в массиве $IPROPERTY будет массив с заполненными SEO-данными, которые можно использовать в микроразметке Open Graph:


$APPLICATION->SetPageProperty("og:image", "https://доменсайта/local/templates/.default/images/logo.svg");
$APPLICATION->SetPageProperty("og:description", $IPROPERTY["ELEMENT_META_DESCRIPTION"]);
$APPLICATION->SetPageProperty("og:type", "website");
$APPLICATION->SetPageProperty("og:url", "https://доменсайта".$arResult["DETAIL_PAGE_URL"]);
$APPLICATION->SetPageProperty("og:title", $IPROPERTY["ELEMENT_META_TITLE"]);

В ключе ELEMENT_META_TITLE находится SEO-title, в ключе ELEMENT_META_DESCRIPTION SEO-описание, в ключе ELEMENT_META_KEYWORDS ключевые слова.

На странице раздела инфоблока вместо метода ElementValues нужно использовать метод SectionValues:


$ipropValues = new \Bitrix\Iblock\InheritedProperty\SectionValues($arParams["IBLOCK_ID"], $arResult["VARIABLES"]["SECTION_ID"]);
$IPROPERTY = $ipropValues->getValues();

Здесь соответственно вторым параметром нужно передать ID раздела. Если $arResult["VARIABLES"]["SECTION_ID"] пусто, то используем $arResult["VARIABLES"]["SECTION_CODE"] для определения ID раздела:


$rsSections = CIBlockSection::GetList(array(),array('IBLOCK_ID' => $arParams ['IBLOCK_ID'], '=CODE' => $arResult['VARIABLES']['SECTION_CODE']));
$arSection = $rsSections->GetNext();

Данный код используем до предыдущего. И теперь, чтобы сделать разметку раздела OpenGraph делаем следующий код:


$APPLICATION->SetPageProperty("og:image", "https://доменсайта/local/templates/.default/images/logo.svg");
$APPLICATION->SetPageProperty("og:description", $IPROPERTY["SECTION_META_DESCRIPTION"]);
$APPLICATION->SetPageProperty("og:type", "website");
$APPLICATION->SetPageProperty("og:url", "https://домен сайта".$arSection["SECTION_PAGE_URL"]);
$APPLICATION->SetPageProperty("og:title", $IPROPERTY["SECTION_META_TITLE"]);

В ключе SECTION_META_TITLE находится SEO-title, в ключе SECTION_META_DESCRIPTION SEO-описание, в ключе SECTION_META_KEYWORDS ключевые слова.


Другие статьи:  Минимальная сумма заказа в корзине в Битрикс / Видео инструкция по модулю Bussol: Счет заказа в PDF на почту для 1С-Битрикс.Управление сайтом / Видео инструкция по модулю Bussol: Голосовой поиск – исправление ошибок, область поиска для 1С-Битрикс.Управление сайтом

Похожие статьи

Адаптивное ютуб видео на сайте
В этом уроке я покажу вам один из способов адаптировать видео, размещенное на сайте с помощью тега iframe, например, видео с хостинга Ютуб.
Как изменить картинку метки в компоненте Яндекс.Карт Битрикс
Стандартный компонент "Настраиваемая Яндекс.Карта" не имеет настройки для изменения изображения меток. В качестве изображения метки используется стандартный значок. В этом видео я покажу, как изменить стандартное изображением меток через код компонента
Интеграция «1С-Битрикс: Управление сайтом» и «1С:Предприятие»
Интеграция сайта с системами «1С:Предприятие» необходима любому бизнесу, который работает с клиентами онлайн. Без неё интернет-магазин просто не может быть конкурентоспособным – обработка заказа будет занимать больше времени, чем клиент может позволить.
Ошибка! innodb_strict_mode=on, требуется off в Битрикс
В 1С-Битрикс.Управление сайтом, обычно сразу после установки, при тестировании системы появляется ошибка в строке Режим работы MySql  "Ошибка! innodb_strict_mode=ON, требуется OFF". Из-за этой ошибки часть функционала Битрикс может не работать.