После SEO-аудита в Rich Results Test висит "0 items detected" — типичная ошибка после установки второго модуля Schema.org без аудита. На карточке с размерами Яндекс не показывает цену, а во View Source проблема дублей: два BreadcrumbList из шаблона и Marketplace. На 1С-Битрикс: Управление сайтом микроразметка - JSON-LD в header.php и шаблонах компонентов. Ниже проведете аудит, настроите ProductGroup для SKU, закроете требования Яндекса по brand и availability и проверите разметку без дублей Microdata.
Микроразметка Schema.org на сайте 1С-Битрикс: Управление сайтом - это структурированные данные, преимущественно JSON-LD, которые выводятся из шаблонов компонентов CMS и сообщают поисковикам тип сущности страницы: Organization, Product, ProductGroup, FAQPage, BreadcrumbList и другие. Сегодня откройте View Source на главной и карточке товара, выпишите все application/ld+json и itemscope, уберите дубли и добавьте ProductGroup с hasVariant там, где есть торговые предложения.
Речь про CMS 1С-Битрикс на вашем хостинге, а не про Bitrix24 без доступа к header.php. После базового SEO на Битрикс микроразметка дает роботу структуру: "это товар", "это организация", "это FAQ".
Что такое микроразметка Schema.org на Битрикс
Schema.org - словарь типов для роботов. JSON-LD - запись в script без правки HTML. Microdata - те же типы через itemscope в верстке. Google рекомендует JSON-LD; один тип в двух форматах = дубль.
Нужна для магазина, блога, FAQ, корпоративного сайта. Можно отложить на одностраничнике - хватит Organization на главной. Для SKU одного Product мало: нужен ProductGroup с hasVariant.
| Компонент | Тип Schema.org | Файл |
|---|---|---|
| header.php | Organization, WebSite | header.php / Asset::addString |
| bitrix:breadcrumb | BreadcrumbList | template.php |
| catalog.element (SKU) | ProductGroup + hasVariant | template.php / epilog |
| news.detail | BlogPosting | template.php |
| FAQ-страница | FAQPage | массив вопросов |
Проведите аудит текущей разметки перед правками
- View Source на главной, товаре с SKU, статье - найдите application/ld+json, itemscope, og:.
- Один тип Schema.org не должен быть и в JSON-LD, и в Microdata.
- Лишняя запятая в JSON = "0 items" в валидаторе.
- Два SEO-модуля - оставьте один источник на тип.
- Сбросьте кеш компонента и снова проверьте View Source.
Делайте: таблица "URL - типы - источник". Не делайте: второй модуль без аудита.
Выберите JSON-LD вместо Microdata на Битрикс
Google Search Central рекомендует JSON-LD: проще править в template.php. Microdata на Битрикс почти всегда конфликтует с модулями Marketplace.
| Критерий | JSON-LD | Microdata |
|---|---|---|
| Динамика из $arResult | Удобно в catalog.element | Дублирует поля в HTML |
| ProductGroup для SKU | Официальная модель Google | Громоздко на десятках Offer |
| Риск дубля с модулем | Низкий после аудита | Высокий |
Настройте ProductGroup с hasVariant для торговых предложений
Несколько SKU (размер, цвет) требуют ProductGroup с hasVariant и AggregateOffer (lowPrice, highPrice). Данные из $arResult['OFFERS'] в catalog.element - тот же массив, что кнопка "В корзину". Верстку карточки смотрите в гайде по карточке товара.
use Bitrix\Main\Web\Json;
$variants = [];
foreach ($arResult['OFFERS'] as $offer) {
$variants[] = [
'@type' => 'Product',
'sku' => $offer['ID'],
'offers' => [
'@type' => 'Offer',
'price' => $offer['MIN_PRICE']['VALUE'],
'priceCurrency' => 'RUB',
'availability' => $offer['CAN_BUY']
? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock',
],
];
}
$schema = [
'@type' => 'ProductGroup',
'name' => $arResult['NAME'],
'hasVariant' => $variants,
'offers' => [
'@type' => 'AggregateOffer',
'lowPrice' => $arResult['MIN_PRICE'],
'highPrice' => $arResult['MAX_PRICE'],
'priceCurrency' => 'RUB',
],
];
echo '<script type="application/ld+json">'
. Json::encode($schema, JSON_UNESCAPED_UNICODE) . '</script>';
Делайте: кодируйте через Bitrix\Main\Web\Json::encode. Не делайте: склейку JSON вручную без экранирования.
Заполните обязательные поля для товарных сниппетов Яндекса
В 2026 Яндекс усилил контроль: раздел Товары - Микроразметка в Вебмастере. По справке Яндекс Товаров обязательны name, brand, image, price/lowPrice, priceCurrency (RUB), availability по остаткам.
- Сопоставьте ошибку в Вебмастере со свойством инфоблока.
- brand - из свойства BRAND или производителя.
- image - абсолютный URL с https://.
- Прогоните URL в валидаторе Яндекса.
Делайте: синхронизируйте availability с остатками. Не делайте: InStock при нулевом остатке.
Сравните модули Marketplace и ручной JSON-LD
| Решение | Закрывает | Когда брать |
|---|---|---|
| sotbit.schemaorg | Organization, Product, BreadcrumbList | Быстрый старт без правки шаблонов |
| mrlexndr.microdata | JSON-LD + OG, AggregateOffer | Каталог с SKU, API Schema::product |
| INRAISE Organization | Organization без кода | Визитка, только контакты |
| Ручной JSON-LD | ProductGroup, кастомные поля | Полный контроль каталога |
Итоговый вердикт: модуль берите, если в шаблоне чисто и нет ProductGroup. Для каталога с размерами и цветами ручной JSON-LD в catalog.element надежнее: вы контролируете hasVariant и не зависите от обновлений модуля.
Делайте: ProductGroup с кастомными variesBy - ручной код. Не делайте: два модуля Schema.org сразу.
Выберите паттерн вывода JSON-LD на D7
| Паттерн | Где | Зачем |
|---|---|---|
| SetViewTarget('schema_json_ld') | catalog.element template.php | Блок в layout через ShowViewContent |
| Json::encode | Любой PHP с массивом | Безопасные кавычки и кириллица |
| Asset::getInstance()->addString() | header.php | Organization один раз на сайт |
Legacy-аналог: $APPLICATION->AddHeadString() или SetPageProperty. На практике workflow выглядит так: аудит View Source → сбор массива в template.php → Json::encode → вывод через SetViewTarget или Asset → проверка в Rich Results Test и microtest Яндекса.
Настройте Organization, WebSite и отделите Open Graph
Organization и WebSite - один раз в header.php через Asset::addString: name, url, logo. WebSite дополните SearchAction, если на сайте есть поиск. BreadcrumbList - в bitrix:breadcrumb из $arResult: минимум два ListItem с position, name и item. URL в JSON-LD совпадают с видимыми ссылками, иначе Google отклонит разметку.
FAQPage: с 07.05.2026 Google снял FAQ rich results, но тип валиден для Яндекс Нейро и AI-краулеров. Текст в JSON-LD = видимый FAQ на странице. Не обещайте аккордеон в Google как KPI 2026.
Open Graph (og:title, og:image) - отдельный слой для Telegram и VK. Schema.org в JSON-LD для поиска. OG через dev2fun.opengraph или SetPageProperty; og:image от 1200 px.
Делайте: один массив FAQ для HTML и JSON-LD. Не делайте: считайте og:description заменой Product.
Проверьте разметку в Rich Results Test и Яндекс.Вебмастере
- Rich Results Test - главная, товар с SKU, FAQ.
- validator.schema.org - сырой JSON.
- Валидатор Яндекса - Product и AggregateOffer.
- View Source после сброса кеша; раздел Товары - Микроразметка без ошибок brand/image.
Итог для владельца: на ключевых URL валидный JSON-LD без дублей, ProductGroup на SKU, brand и availability закрыты для Яндекса, OG работает в мессенджерах. Динамику сниппетов отслеживайте через Яндекс.Метрику. Нет времени на шаблоны - обсудите аудит; примеры - в портфолио.
Автор: Максим Мольков, разработчик 1С-Битрикс.
Источники: Google (ProductGroup), Яндекс Товары, dev.1c-bitrix.ru.
Частые вопросы
Как добавить микроразметку на Битрикс?
JSON-LD в header.php для Organization, в template.php компонентов - для BreadcrumbList, ProductGroup, BlogPosting и FAQPage. Данные из $arResult, кодировка через Bitrix\Main\Web\Json::encode. Сначала аудит View Source и удаление дублей Microdata.
Какая микроразметка нужна для товаров в Яндексе?
Product или ProductGroup с Offer/AggregateOffer: name, brand, image, price, priceCurrency (RUB), availability. Для SKU - ProductGroup с hasVariant, не один Product с одной ценой.
Нужна ли FAQPage в 2026 году?
Google снял FAQ rich results с 07.05.2026. FAQPage полезен для Яндекс Нейро и AI-краулеров при совпадении текста с видимым блоком. Не ставьте FAQ-сниппет Google как главный KPI.
Модуль Marketplace или ручной JSON-LD?
Модуль (sotbit.schemaorg, mrlexndr.microdata) - быстрый старт без своей разметки. Ручной код - ProductGroup и кастомные поля. Два модуля Schema.org часто дают дубль BreadcrumbList.
Как проверить микроразметку schema org?
Rich Results Test, validator.schema.org, webmaster.yandex.ru/tools/microtest/. При "0 items" скопируйте JSON из View Source в validator.schema.org и сбросьте кеш компонента.
Как вывести JSON-LD через SetViewTarget?
В template.php: SetViewTarget('schema_json_ld'), массив ProductGroup, script с Json::encode, EndViewTarget(). В layout: ShowViewContent('schema_json_ld'). Для глобальных типов - Asset::getInstance()->addString() в header.php.
Почему Rich Results Test показывает 0 items?
Сломан JSON, кеш не сброшен или script внутри условия if. Используйте Json::encode вместо ручной склейки строк, проверьте View Source после очистки кеша.