Автоматизация заполнения сущности «Product» на примере стандартного шаблона «1С-Битрикс: Управление сайтом.»
Добавьте генерацию микроразметки на детальную страницу товара:
Перейдите в административную часть сайта.
Далее зайдите в раздел «Каталог».
Перейдите к файлу эпилога шаблона компонента детальной страницы товара. Для стандартного шаблона это: [Файлы и папки/bitrix/components/bitrix/catalog.element/templates/.default/component_epilog.php]
Вставьте код обработки данных микро-разметки типа «Product» в конец файла.
Для этого нажмите правой кнопкой на файл «component_epilog.php», далее «Редактировать как PHP»
Код обработчика:
<? if( \Bitrix\Main\Loader::includeModule('sotbit.schemaorg') && strpos($APPLICATION->GetCurPage(), "bitrix") === false ) { Sotbit\Schemaorg\EventHandlers::makeContent($APPLICATION->GetCurPage(false), 'Product'); $data = SchemaMain::getData(); if(!empty($data)) { foreach ($data as $k => &$dat) { if ($dat['@type'] == 'Product') { $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; if (!empty($arResult['NAME'])) $dat['name'] = $arResult['NAME']; else { $dat = []; continue; } if (!empty($arResult['PREVIEW_TEXT'])) $dat['description'] = $arResult['PREVIEW_TEXT']; else if (!empty($arResult['DETAIL_TEXT'])) $dat['description'] = $arResult['DETAIL_TEXT']; (!empty($arResult['SKU']) ? $dat['sku'] = $arResult['SKU'] : ""); if (!empty($arResult['PREVIEW_PICTURE']['SRC'])) $dat['image'] = $protocol . $_SERVER['SERVER_NAME'] . $arResult['PREVIEW_PICTURE']['SRC']; else if (!empty($arResult['DETAIL_PICTURE']['SRC'])) $dat['image'] = $protocol . $_SERVER['SERVER_NAME'] . $arResult['DETAIL_PICTURE']['SRC']; if (!empty($arResult['PROPERTIES']['rating']) && !empty($arResult['PROPERTIES']['rating']['VALUE'])) { if (!isset($dat['aggregateRating'])) $dat['aggregateRating']['@type'] = 'AggregateRating'; (!empty($arResult['PROPERTIES']['rating']['NAME']) ? $dat['aggregateRating']['name'] = $arResult['PROPERTIES']['rating']['NAME'] : ""); (!empty($arResult['PROPERTIES']['rating']['VALUE']) ? $dat['aggregateRating']['ratingValue'] = $arResult['PROPERTIES']['rating']['VALUE'] : ""); (!empty($arResult['PROPERTIES']['vote_count']['VALUE']) ? $dat['aggregateRating']['ratingCount'] = $arResult['PROPERTIES']['vote_count']['VALUE'] : ""); } if (!empty($arResult['OFFERS']) && !empty($OFFER['ITEM_PRICES'][0]['PRICE'])) { if (!isset($dat['offers'])) $dat['offers'][0]['@type'] = "Offers"; foreach ($arResult['OFFERS'] as $keyOf => $OFFER) { (!empty($OFFER['NAME']) ? $dat['offers'][$keyOf]['name'] = $OFFER['NAME'] : ""); ($OFFER['PRODUCT']['AVAILABLE'] == 'Y' ? $dat['offers'][$keyOf]['availability'] = "InStock" : ""); (!empty($OFFER['ITEM_PRICES'][0]['PRICE']) ? $dat['offers'][$keyOf]['price'] = $OFFER['ITEM_PRICES'][0]['PRICE'] : ""); (!empty($OFFER['ITEM_PRICES'][0]['CURRENCY']) ? $dat['offers'][$keyOf]['priceCurrency'] = $OFFER['ITEM_PRICES'][0]['CURRENCY'] : ""); (!empty($arResult['DETAIL_PAGE_URL']) ? $dat['offers'][$keyOf]['url'] = $protocol . $_SERVER['SERVER_NAME'] . $arResult['DETAIL_PAGE_URL'] : ""); } } if (is_array($arResult['BRAND']) && !empty($arResult['BRAND'])) { if (!isset($dat['brand'])) $dat['brand']['@type'] = "Brand"; foreach ($arResult['BRAND'] as $key => $brand) { (!empty($brand['NAME']) ? $dat['brand']['name'] = $brand['NAME'] : ""); (!empty($brand['SRC']) ? $dat['brand']['image'] = $protocol . $_SERVER['SERVER_NAME'] . $brand['SRC'] : ""); (!empty($brand['URL']) ? $dat['brand']['url'] = $protocol . $_SERVER['SERVER_NAME'] . $brand['URL'] : ""); break; } } SchemaMain::setData($data); } } } } ?>
В таком виде код обработчика автоматически подставляет данные, собранные с детальной страницы товара, в сущность «Product» для дальнейшего их добавления в скрипт json+ld.
Важно!
Выделенные строки обязательны для каждой сущности.
Строки №2-5 обязательны для получения доступа к правилам Schema.org.
Строка №60 - для сохранения изменений.
Оставьте заявку и мы свяжемся с вами!