Как сделать микроразметку OpenGraph для элементов и разделов инфоблока на Bitrix API - разработка и поддержка сайтов BUSSOL
Напишите нам
Напишите нам

Как сделать микроразметку 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С-Битрикс.Управление сайтом

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

Импорт данных из CSV в MySQL
Казалось бы, тема старая, однако актуальна и по сей день. У многих программистов возникает необходимость импорта данных из csv в mysql и вопрос о том, как это сделать.
Добавление товара в избранное на ajax в Битрикс
Добавление товара или статьи в избранное - это обязательная фишка для интернет-магазина или блога. Однако, в Битрикс по умолчанию нет функционала добавления элемента инфоблока в избранное.