БесплатноБесплатный аудит сайта и кода на 1С-Битрикс при заказе доработки или поддержки

Микроразметка Schema.org для интернет-магазина на 1С-Битрикс

Микроразметка Schema.org для интернет-магазина на 1С-Битрикс: JSON-LD для Product, Offer, отзывов и хлебных крошек

Два одинаковых магазина на 1С-Битрикс продают один и тот же товар и стоят в выдаче рядом. Но у одного в сниппете видна цена, «в наличии», четыре с половиной звезды и число отзывов, а у второго — просто синяя ссылка и обрывок текста. Первый заберёт большую часть кликов, хотя позиция у них почти одинаковая. Разница — в микроразметке Schema.org: структурированных данных, которые объясняют поисковику, что цена — это цена, наличие — это наличие, а рейтинг — это рейтинг.

Эта статья — практический разбор того, как внедрить микроразметку Schema.org в интернет-магазин на 1С-Битрикс: какие типы нужны каталогу (Product, Offer, отзывы, хлебные крошки), в каком формате их отдавать, как сформировать JSON-LD из свойств товара в шаблоне компонента и как проверить результат в валидаторах Яндекса и Google. Материал опирается на нашу практику проектирования SEO-структуры магазинов — без обещаний «гарантированного ТОПа» и выдуманных цифр.

Коротко

  • Микроразметка Schema.org даёт поисковику структурированные данные, из которых собираются расширенные сниппеты — цена, наличие, рейтинг в выдаче.
  • Для нового магазина рекомендуется JSON-LD: отдельный блок в коде, не завязанный на вёрстку.
  • Каталогу нужны Product + Offer (price, priceCurrency, availability, sku), AggregateRating/Review, BreadcrumbList, Organization и WebSite.
  • Значения в разметке обязаны совпадать с видимой страницей; рейтинг без реальных отзывов — против правил.
  • Проверяйте страницы в Валидаторе Яндекса и Rich Results Test Google, а формируйте разметку из свойств товара в шаблоне catalog.element.

Зачем интернет-магазину микроразметка Schema.org

Поисковик видит страницу не так, как человек. Мы понимаем, что «2 490 ₽» — это цена, а «★★★★☆» — рейтинг, потому что так подсказывает вёрстка и контекст. Робот же получает поток текста и тегов, в котором «2490» может быть ценой, артикулом, весом или годом. Микроразметка Schema.org убирает эту неоднозначность: она прямо помечает, что вот это — цена товара, вот это — валюта, вот это — статус наличия, а вот это — средняя оценка по стольким-то отзывам.

Когда данные размечены, поисковик может собрать из них расширенный сниппет (rich snippet) — блок в выдаче, где под заголовком видны цена, наличие, рейтинг со звёздами, иногда — быстрые ссылки и поле поиска по сайту. Для интернет-магазина это прямое конкурентное преимущество: такой сниппет заметнее, честнее отвечает на запрос ещё до клика и собирает больше переходов при той же позиции.

Что разметка даёт магазину

Важно: микроразметка не поднимает сайт в выдаче сама по себе — это не прямой фактор ранжирования. Её ценность в кликабельности расширенного сниппета и в том, что поисковик правильнее понимает страницу. Обещать «ТОП за счёт Schema.org» — некорректно.

Структурированные данные и rich snippets простыми словами

Разложим термины, чтобы дальше говорить на одном языке. Schema.org — это общий словарь типов и свойств, которым описывают сущности на страницах: товар (Product), предложение (Offer), организация (Organization), статья (Article) и сотни других. Словарь поддерживают крупнейшие поисковики, поэтому одна и та же разметка понятна и Яндексу, и Google.

Структурированные данные — это конкретная разметка на вашей странице, сделанная по словарю Schema.org. Она не видна пользователю: живёт либо отдельным блоком кода (JSON-LD), либо атрибутами внутри HTML (микроданные, RDFa). Её задача — дать машине однозначную опись содержимого.

Rich snippet (расширенный сниппет) — это уже результат: то, как поисковик показывает вашу страницу в выдаче, используя структурированные данные. Цепочка простая: страница с разметкой → поисковик прочитал структурированные данные → при желании собрал из них расширенный сниппет. Последнее звено — на усмотрение алгоритма: разметка даёт возможность, но не обязывает показать rich snippet.

Страница товара 2 490 ₽ В наличии ★★★★☆ 4,6 JSON-LD "@type":"Product" "price":"2490" "availability":InStock Сниппет в выдаче Название товара 2 490 ₽ · В наличии ★★★★☆ 4,6 · 128 отзывов
Схема: данные с карточки описываются в JSON-LD, поисковик читает разметку и может собрать из неё расширенный сниппет с ценой, наличием и рейтингом.

Форматы разметки: JSON-LD, микроданные, RDFa

Один и тот же смысл по Schema.org можно записать тремя синтаксисами. Понимают их все основные поисковики, но по удобству сопровождения они сильно различаются.

ФорматКак выглядитПлюсы и минусы
JSON-LDОтдельный блок script с типом application/ld+jsonНе завязан на вёрстку, легко генерировать и валидировать; рекомендуемый формат
МикроданныеАтрибуты itemscope, itemtype, itemprop прямо в HTMLРазметка «прибита» к вёрстке; при правке шаблона легко сломать
RDFaАтрибуты vocab, typeof, property в HTMLТоже внутри вёрстки; на практике в магазинах используется реже

Для интернет-магазина на 1С-Битрикс рабочая рекомендация — JSON-LD. Он лежит отдельным блоком в коде страницы, не пересекается с классами и структурой вёрстки, легко формируется из свойств товара в шаблоне компонента и так же легко проверяется в валидаторах. Если завтра дизайнер переверстает карточку, JSON-LD останется на месте — а вот микроданные, вшитые в теги, при переверстке нередко «разъезжаются».

Так выглядит скелет JSON-LD-блока, который вставляется в код карточки товара (обратите внимание: это script с особым типом, браузер его не отображает):

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Название товара"
}
</script>

Здесь @context сообщает, что мы используем словарь Schema.org, @type задаёт тип сущности (в примере — товар), а дальше идут свойства. Фигурные скобки { и } ограничивают объект, значения — в двойных кавычках. Это обычный JSON, поэтому его удобно собирать программно из данных товара.

Совет: не смешивайте без нужды форматы на одной странице. Если часть данных уже выводится штатными компонентами Битрикса в виде микроданных, а часть вы добавляете как JSON-LD, следите, чтобы значения не противоречили друг другу. Дублирование одного и того же типа в двух форматах допустимо, но данные обязаны совпадать.

Ключевые типы Schema.org для магазина

Словарь Schema.org огромен, но интернет-магазину в повседневной работе нужен ограниченный, вполне обозримый набор типов. Держите его как карту: где какой тип уместен и что он даёт в выдаче.

Тип разметкиГде применяетсяЧто потенциально даёт в выдаче
ProductКарточка товараРасширенный сниппет товара: название, изображение, бренд
OfferВнутри ProductЦена, валюта, статус наличия в сниппете
AggregateRatingВнутри ProductСредняя оценка и число отзывов (звёзды)
ReviewВнутри ProductОтдельные отзывы с автором и оценкой
BreadcrumbListВсе страницы каталогаПуть-хлебные крошки вместо URL в сниппете
Organization / LocalBusinessГлавная, «О компании», подвалЗнание о компании, логотип, контакты, филиалы
WebSite + SearchActionГлавная страницаСтрока поиска по сайту в сниппете бренда
ItemListЛистинги, категорииПомощь в понимании структуры списка товаров
FAQPageСтраницы с блоком вопросовРаскрывающиеся вопросы-ответы в выдаче
Article / BlogPostingСтатьи блогаДата, автор, изображение статьи в сниппете

Дальше разберём главные для магазина типы по отдельности, с примерами JSON-LD. Начнём с ядра карточки товара — связки Product и Offer, ради которой микроразметку чаще всего и внедряют.

Product — центр карточки товара

Тип Product описывает товар как сущность: его название, изображение, описание, бренд, идентификаторы. Это контейнер, внутри которого живут предложение (Offer с ценой и наличием) и оценки (AggregateRating, Review). Именно из корректно заполненного Product поисковик собирает товарный расширенный сниппет.

Минимально осмысленный, но уже рабочий пример разметки товара выглядит так:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Смартфон Alpha X 128 ГБ",
  "image": "https://example.ru/upload/iblock/alpha-x.jpg",
  "description": "Смартфон Alpha X с экраном 6,5 дюйма и памятью 128 ГБ.",
  "sku": "ALPHA-X-128",
  "brand": {
    "@type": "Brand",
    "name": "Alpha"
  }
}
</script>

Разберём поля построчно, потому что от их корректности зависит, распознает ли поисковик товар:

По желанию к Product добавляют gtin/mpn (глобальные и производственные идентификаторы), category, color, material и другие свойства. Но сердце товарного сниппета — не эти поля, а вложенное предложение Offer с ценой и наличием. К нему и переходим.

Offer: цена, валюта, наличие, SKU

Offer — это предложение к покупке: сколько стоит товар, в какой валюте и есть ли он в наличии. Без Offer внутри Product поисковик не покажет в сниппете ни цену, ни статус наличия — а это как раз то, ради чего магазины и берутся за разметку. Вот Product с вложенным предложением:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Смартфон Alpha X 128 ГБ",
  "sku": "ALPHA-X-128",
  "offers": {
    "@type": "Offer",
    "price": "24990",
    "priceCurrency": "RUB",
    "availability": "https://schema.org/InStock",
    "url": "https://example.ru/catalog/smartfony/alpha-x/",
    "priceValidUntil": "2026-12-31"
  }
}
</script>

Ключевые поля предложения:

Статус наличия задаётся не произвольным текстом, а конкретным значением словаря. Основные:

Значение availabilityСмыслКогда ставить
InStockВ наличииТовар доступен к покупке прямо сейчас
OutOfStockНет в наличииТовар закончился, купить нельзя
PreOrderПредзаказТовар ещё не поступил, но принимаются заказы
BackOrderПод заказНет на складе, но привозится под заказ
DiscontinuedСнят с продажиПозиция больше не продаётся

Если у товара несколько торговых предложений (SKU) с разными ценами — например, разные объёмы памяти или цвета, — вместо одиночного Offer используют AggregateOffer с диапазоном цен:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Смартфон Alpha X",
  "offers": {
    "@type": "AggregateOffer",
    "priceCurrency": "RUB",
    "lowPrice": "24990",
    "highPrice": "34990",
    "offerCount": "4",
    "availability": "https://schema.org/InStock"
  }
}
</script>
Главное правило Offer: цена и наличие в разметке должны совпадать с тем, что видит человек на странице. Если на карточке 24 990 ₽ и «в наличии», то в JSON-LD должно быть "price": "24990" и InStock. Расхождение поисковик трактует как недостоверную разметку и сниппет с ценой не покажет.

AggregateRating и Review: рейтинг и отзывы

Звёзды рейтинга в выдаче — один из самых заметных элементов расширенного сниппета. За них отвечают два типа: AggregateRating (усреднённая оценка по всем отзывам) и Review (отдельный отзыв). Оба вкладываются в Product. Пример товара с рейтингом и одним отзывом:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Смартфон Alpha X 128 ГБ",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "128",
    "bestRating": "5",
    "worstRating": "1"
  },
  "review": {
    "@type": "Review",
    "author": {
      "@type": "Person",
      "name": "Иван П."
    },
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": "5",
      "bestRating": "5"
    },
    "reviewBody": "Отличный смартфон, батарея держит два дня."
  }
}
</script>

Поля AggregateRating:

Категорически важно: рейтинг и отзывы в разметке должны опираться на реальные, видимые на странице оценки. Проставлять AggregateRating «ради звёздочек», когда отзывов на сайте нет, — прямое нарушение правил и Яндекса, и Google. За это сниппет с рейтингом не покажут, а при систематических нарушениях можно получить ручные санкции. Нет отзывов — не выводите блок рейтинга вовсе.

Отдельная тонкость — тип сущности, к которой относится отзыв. Отзыв должен относиться к товару (Product), а не к организации, если речь о конкретной позиции. И наоборот: общие отзывы о магазине уместнее размечать на Organization, а не подмешивать в каждую карточку. Не «перевешивайте» рейтинг магазина на все товары подряд — это ещё одна распространённая причина, по которой звёзды не появляются в выдаче.

BreadcrumbList: хлебные крошки в выдаче

BreadcrumbList размечает навигационную цепочку «Главная → Каталог → Категория → Товар». В выдаче она превращается в аккуратный путь вместо длинного технического URL, помогает пользователю понять, куда он попадёт, и заодно подсказывает поисковику структуру сайта. Для интернет-магазина хлебные крошки — обязательный минимум разметки на всех страницах каталога.

Разметка списка хлебных крошек — это упорядоченный набор позиций, у каждой из которых есть имя, адрес и порядковый номер:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Главная",
      "item": "https://example.ru/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Каталог",
      "item": "https://example.ru/catalog/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Смартфоны",
      "item": "https://example.ru/catalog/smartfony/"
    },
    {
      "@type": "ListItem",
      "position": 4,
      "name": "Смартфон Alpha X 128 ГБ"
    }
  ]
}
</script>

На что обратить внимание в этой разметке:

В 1С-Битрикс хлебные крошки формирует шаблон сайта (функция построения навигационной цепочки), поэтому логично собирать BreadcrumbList ровно из тех же данных, что и видимая цепочка. Так вы гарантируете совпадение и не заведёте два разных «пути» — видимый и размеченный.

BreadcrumbList position 1 → Главная position 2 → Каталог position 3 → Смартфоны position 4 → Alpha X example.ru › Каталог › Смартфоны Смартфон Alpha X 128 ГБ 24 990 ₽ · В наличии Аккуратный путь вместо длинного URL
Схема: размеченная цепочка BreadcrumbList отображается в сниппете как понятный путь навигации, а не как технический адрес страницы.

Organization и LocalBusiness

Пока Product описывает товары, тип Organization описывает сам магазин как компанию: название, логотип, сайт, контакты, ссылки на соцсети. Эта разметка помогает поисковику сформировать «знание» о бренде и корректно показать логотип и контакты по брендовым запросам. Размечают её обычно на главной странице или в подвале сайта — один раз на весь ресурс.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Магазин Example",
  "url": "https://example.ru/",
  "logo": "https://example.ru/logo.png",
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+7-495-000-00-00",
    "contactType": "customer service"
  },
  "sameAs": [
    "https://vk.com/example",
    "https://t.me/example"
  ]
}
</script>

Если у магазина есть физические точки — салоны, пункты выдачи, шоурумы, — вместо (или в дополнение к) Organization используют более конкретный тип LocalBusiness (или Store). Он добавляет адрес, часы работы, гео-координаты — то, что важно для локального поиска и карт:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Store",
  "name": "Магазин Example на Тверской",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "ул. Тверская, 1",
    "addressLocality": "Москва",
    "postalCode": "125009",
    "addressCountry": "RU"
  },
  "openingHours": "Mo-Su 10:00-21:00",
  "telephone": "+7-495-000-00-00"
}
</script>

Правило то же, что и везде: разметка описывает реальные данные компании, которые есть на сайте. Не выдумывайте филиалы и часы работы ради разметки — это и бесполезно для выдачи, и подрывает доверие к остальным структурированным данным.

WebSite и SearchAction: окно поиска в сниппете

Тип WebSite с вложенным SearchAction сообщает поисковику, что на сайте есть внутренний поиск и по какому адресу он принимает запросы. Для узнаваемого бренда это может дать в выдаче строку поиска прямо в сниппете (так называемый sitelinks searchbox) — пользователь ищет по вашему каталогу, не заходя на сайт через промежуточную страницу.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "Магазин Example",
  "url": "https://example.ru/",
  "potentialAction": {
    "@type": "SearchAction",
    "target": "https://example.ru/search/?q={search_term_string}",
    "query-input": "required name=search_term_string"
  }
}
</script>

Здесь target — шаблон URL вашего поиска, где {search_term_string} — плейсхолдер, на место которого поисковик подставит запрос пользователя. Убедитесь, что этот адрес реально работает: перейдите по нему вручную с любым словом вместо плейсхолдера и проверьте, что страница поиска отдаёт результаты. Разметка поиска, ведущая в никуда, бесполезна.

Реальность про searchbox: строка поиска в сниппете появляется не у всех и не всегда — поисковик показывает её выборочно, чаще для сайтов с сильным брендовым спросом. Разметка WebSite создаёт возможность, но не гарантию. Делать её стоит, вреда нет, а потенциальная польза для брендовой выдачи есть.

ItemList для листингов каталога

Страницы категорий и результатов фильтра — это списки товаров. Тип ItemList помогает поисковику понять, что перед ним именно перечень позиций, и в каком они порядке. Для карусельных и товарных списков это бывает полезно, хотя приоритет у листингов ниже, чем у карточек: главный товарный сниппет собирается всё-таки из Product на детальной странице.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "url": "https://example.ru/catalog/smartfony/alpha-x/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "url": "https://example.ru/catalog/smartfony/beta-y/"
    }
  ]
}
</script>

Практический совет: не гонитесь за тем, чтобы разметить абсолютно всё. На листингах в первую очередь важны BreadcrumbList (путь навигации) и корректные метатеги — их удобно генерировать по шаблону, как мы описывали в статье про SEO-шаблоны метатегов для умного фильтра. А ItemList — приятное дополнение. Куда важнее не наплодить дубли и не размечать «мусорные» комбинации фильтра — этот вопрос мы подробно разбирали в материале про robots.txt и sitemap.xml для большого магазина и в статье про умный фильтр в 1С-Битрикс.

FAQPage, Article и BlogPosting для контента

Микроразметка полезна не только каталогу. У магазина обычно есть блог, страницы услуг, разделы помощи — и для них Schema.org тоже предлагает подходящие типы.

FAQPage — блок вопросов и ответов

Если на странице есть настоящий блок «Частые вопросы», его размечают типом FAQPage. В выдаче такие вопросы иногда показываются раскрывающимся списком под сниппетом. Условие то же — вопросы и ответы должны быть реально видны на странице, а не спрятаны только в разметке:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Есть ли доставка по всей России?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Да, мы доставляем заказы по всей России курьерскими службами и почтой."
      }
    }
  ]
}
</script>

Article и BlogPosting — статьи блога

Материалы блога размечают типом Article или его подтипом BlogPosting. Разметка передаёт заголовок, дату публикации и обновления, автора и главное изображение — это помогает поисковику показать статью с корректной датой и авторством:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "Микроразметка Schema.org для интернет-магазина",
  "image": "https://example.ru/assets/img/blog/cover-seo.webp",
  "datePublished": "2026-07-01",
  "dateModified": "2026-07-01",
  "author": {
    "@type": "Organization",
    "name": "Редакция B2Bsite"
  }
}
</script>

Кстати, именно так размечена и эта статья: в шаблоне детальной страницы блога вызывается хелпер, который собирает BlogPosting из данных статьи, а рядом — FAQPage из блока вопросов внизу. Это тот же принцип, что и в каталоге: разметка формируется из данных автоматически, а не проставляется руками у каждого материала.

Граф сущностей: как связать Product, Offer, Brand и Review

Когда типов на странице несколько, важно понимать, что они не разрозненны, а образуют граф — дерево вложенных и связанных сущностей. У карточки товара в центре стоит Product, а к нему «подвешены» предложение, бренд и отзывы. Именно из этого графа поисковик и собирает единую картину товара.

Плоско это можно представить так: один блок JSON-LD описывает Product, а внутри него как вложенные объекты лежат Offer, Brand, AggregateRating. Не нужно делать четыре отдельных блока и пытаться связать их вручную — вложенность в одном объекте и есть связь. Для более сложных случаев Schema.org поддерживает ссылки через @id, но для типовой карточки товара хватает обычной вложенности.

Product карточка товара Offer price, availability Brand производитель AggregateRating средняя оценка Review отзывы
Схема: Product — корень графа, к которому вложены Offer (цена и наличие), Brand, AggregateRating и Review. Вложенность объектов и есть связь между сущностями.

Как внедрить JSON-LD в шаблон catalog.element

Теория закончилась — переходим к тому, как это делается в 1С-Битрикс. Карточку товара выводит компонент bitrix:catalog.element (или catalog.section для списков). Разметку удобнее всего формировать в шаблоне компонента: там уже есть массив с данными товара — свойства, цены, картинки, — из которых собирается JSON-LD.

Логика внедрения такая:

  1. Скопируйте системный шаблон компонента в свой. Никогда не правьте шаблоны в системной папке — их перезапишет обновление. Сделайте копию в шаблоне сайта и работайте с ней.
  2. Найдите в шаблоне данные товара. В template.php доступен массив результата компонента: название, свойства, цены, изображения. Это ваш источник для разметки.
  3. Соберите массив разметки в PHP. Постройте ассоциативный массив со структурой Product → Offer → рейтинг, подставляя реальные значения товара.
  4. Выведите его как JSON. Оберните массив в script с типом application/ld+json и закодируйте функцией кодирования в JSON с флагами, которые не экранируют кириллицу и слэши.
  5. Проверьте на реальной странице. Откройте карточку, посмотрите исходный код, найдите блок разметки и прогоните его через валидатор.

Концептуально код в шаблоне выглядит так (значения берутся из данных товара, а не пишутся вручную):

<?php
$ld = [
    "@context" => "https://schema.org",
    "@type"    => "Product",
    "name"     => $arResult["NAME"],
    "sku"      => $arResult["PROPERTIES"]["ARTICLE"]["VALUE"],
    "offers"   => [
        "@type"         => "Offer",
        "price"         => $price,
        "priceCurrency" => "RUB",
        "availability"  => $available
            ? "https://schema.org/InStock"
            : "https://schema.org/OutOfStock",
    ],
];
echo '<script type="application/ld+json">'
   . json_encode($ld, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)
   . '</script>';
?>

Ключевой момент — флаги кодирования: без JSON_UNESCAPED_UNICODE кириллица превратится в escape-последовательности (формально валидно, но нечитаемо), а JSON_UNESCAPED_SLASHES оставит URL в человеческом виде. Значения $price и $available вы получаете из данных о цене и остатке — об этом следующий раздел.

Почему массив, а не строка: собирать JSON-LD конкатенацией строк — плохая идея. Спецсимволы в названии или описании товара (кавычки, переносы) сломают невалидный вручную собранный JSON. Функция кодирования в JSON сама экранирует всё правильно, поэтому всегда строим массив и кодируем его, а не «склеиваем» текст.

Где брать цену, наличие и рейтинг в Битриксе

Разметка ровно настолько достоверна, насколько достоверны данные, из которых она собрана. Поэтому важно брать значения из тех же источников, что питают видимую карточку. Разберём по каждому полю.

Цена

Цену берут из торгового каталога — из того типа цены, который показывается покупателю на карточке, уже с учётом скидок и группы клиента. Если у вас разные цены для розницы и опта, в разметку идёт та, которую видит текущий покупатель. Тема цен по группам — отдельная большая история; если она у вас сложная, разметку синхронизируют именно с итоговой отображаемой ценой, а не с базовой из справочника.

Наличие

Статус наличия формируется из остатков и признака доступности товара. Логика простая: товар доступен к покупке — InStock, закончился — OutOfStock, принимается предзаказ — PreOrder, возится под заказ — BackOrder. Если каталог работает с остатками из 1С, значение наличия должно опираться на те же остатки, что и кнопка «Купить» на карточке. После обмена с 1С и сброса кэша разметка пересоберётся с новыми остатками автоматически.

Рейтинг и отзывы

Источник рейтинга — модуль отзывов или система оценок, которую вы используете. Средний балл и число отзывов берут из неё же, из тех данных, что показаны на карточке. Если отзывов у товара нет — блок AggregateRating просто не выводят (см. условие в коде: рейтинг добавляется, только если отзывы есть). Не подставляйте в разметку рейтинг «по умолчанию» или общий рейтинг магазина вместо оценок конкретного товара.

Поле разметкиИсточник в БитриксеУсловие вывода
price / priceCurrencyТип цены торгового каталога (с учётом скидок и группы)Всегда, если товар продаётся
availabilityОстатки и статус доступности товараВсегда, значение зависит от остатка
skuСвойство «Артикул» или внешний кодЕсли заполнено
brandСвойство «Бренд» (список или highload-справочник)Если у товара есть бренд
aggregateRatingМодуль отзывов / система оценокТолько если есть реальные отзывы

Про то, как в целом устроена продающая карточка товара — какие элементы на ней должны быть и как разметка вписывается в общую конверсию, — мы писали в отдельном материале про карточку товара и конверсию. Микроразметка там работает в связке с ценой, наличием и отзывами, которые уже есть на странице.

Штатная микроразметка в компонентах Битрикса

Важно знать: часть штатных компонентов 1С-Битрикс уже выводит микроразметку из коробки — как правило, в формате микроданных. Например, компоненты каталога и хлебных крошек могут добавлять атрибуты itemtype/itemprop в HTML. Это удобно, но порождает две типичные ситуации.

Практичный подход: определитесь с одним основным форматом (для новых проектов — JSON-LD), проверьте, что именно выводят ваши компоненты, и приведите всё к единому непротиворечивому виду. Не нужно героически вычищать все штатные микроданные — достаточно, чтобы данные в них не спорили с вашим JSON-LD. А там, где штатной разметки нет или она бедна, вы добавляете собственную.

Проверка на практике: откройте исходный код готовой карточки и поищите в нём itemtype, itemprop и блоки application/ld+json. Так вы увидите, что уже размечено штатно, а что нужно добавить. Это первый шаг перед любым внедрением — понять, с чего вы стартуете.

Валидация разметки: инструменты и порядок

Разметку нельзя «сделать и забыть» — её обязательно проверяют инструментами, потому что мелкая ошибка (лишняя запятая, неверный тип поля, несовпадение цены) обнуляет весь блок. Есть три опорных инструмента, и лучше пользоваться всеми.

ИнструментЧто проверяетКогда применять
Валидатор микроразметки ЯндексаКорректность разметки и её видимость для ЯндексаДля российской аудитории — обязательно
Rich Results Test (Google)Поддерживаемые Google типы и право на rich snippetПроверка расширенных сниппетов Google
Schema Markup Validator (schema.org)Синтаксис и соответствие словарю Schema.orgОбщая проверка корректности разметки

Разумный порядок проверки:

  1. Синтаксис в Schema Markup Validator. Сначала убедитесь, что JSON вообще валиден и типы/поля распознаются — это отсекает грубые ошибки.
  2. Rich Results Test для Google. Проверьте, что Google видит нужный тип (Product, Breadcrumb, FAQ) и не ругается на обязательные поля.
  3. Валидатор Яндекса. Прогоните ту же страницу через инструмент Яндекса — у него свои требования, и он подсветит свои предупреждения.
  4. Проверка на «живой» странице. Валидируйте не черновик, а реальный URL: важно, чтобы разметка совпадала с видимым контентом именно в продакшене.
  5. Мониторинг в панелях вебмастера. После индексации следите за отчётами по структурированным данным в Яндекс.Вебмастере и Google Search Console — там всплывают ошибки, которые не видны на одной странице.

Отдельно предупредим про частую ловушку: валидатор проверяет разметку, но не проверяет её соответствие видимому контенту. Валидатор скажет «всё хорошо», даже если в разметке цена 24 990, а на странице 27 990 — синтаксически-то верно. Соответствие данных вы контролируете сами. Именно на этом расхождении чаще всего и «сгорают» расширенные сниппеты.

Как разметка попадает в индекс и выдачу

Полезно понимать весь путь: от того, как вы добавили JSON-LD, до момента, когда в выдаче появляется (или не появляется) расширенный сниппет. Он состоит из нескольких шагов, и на каждом что-то может пойти не так.

  1. Разметка добавлена в код страницы. JSON-LD выводится в HTML карточки и доступен в исходном коде.
  2. Робот скачивает страницу. Поисковый бот получает HTML вместе с блоком разметки. Важно, чтобы страница была открыта для индексации, а разметка — в исходном коде, а не подгружалась скриптом позже.
  3. Разметка распознаётся и проверяется. Поисковик разбирает структурированные данные, сверяет их с видимым контентом и своими правилами.
  4. Страница индексируется. Товар попадает в индекс вместе с распознанными данными о цене, наличии, рейтинге.
  5. Алгоритм решает про сниппет. При показе в выдаче поисковик сам выбирает, собрать ли расширенный сниппет и в каком виде — это зависит от запроса, доверия к сайту и региона.

Отсюда два практических следствия. Первое: разметка должна быть в исходном HTML, а не появляться только после выполнения JavaScript, — так надёжнее для распознавания. Второе: между внедрением разметки и появлением сниппетов проходит время — нужно, чтобы робот переобошёл страницы и переоценил их. Мгновенного эффекта ждать не стоит; это нормальный процесс индексации.

Разметка в коде Валидация инструменты Обход роботом Индексация с данными Сниппет в выдаче
Схема: путь разметки от кода страницы через валидацию и обход роботом к индексации и, при решении алгоритма, к расширенному сниппету в выдаче.

Частые ошибки микроразметки

Эти промахи повторяются из проекта в проект. Зная их заранее, вы избежите ситуации «разметка есть, а сниппета нет» и не нарветесь на санкции:

Чек-лист внедрения

Короткий список, по которому удобно принять готовность микроразметки перед запуском:

  1. Формат выбран. Для новых внедрений — JSON-LD; проверено, что штатные микроданные не конфликтуют с ним.
  2. Product на всех карточках. Разметка формируется в шаблоне catalog.element автоматически из свойств товара.
  3. Offer заполнен. Есть price, priceCurrency (RUB), availability из реальных остатков; значения совпадают с видимой ценой и наличием.
  4. Рейтинг честный. AggregateRating выводится только при наличии реальных отзывов и синхронизирован с их числом и баллом.
  5. Хлебные крошки размечены. BreadcrumbList на всех страницах каталога совпадает с видимой цепочкой.
  6. Организация и сайт описаны. На главной есть Organization (или LocalBusiness) и WebSite с SearchAction.
  7. Контент размечен. Статьи блога — BlogPosting, реальные блоки вопросов — FAQPage.
  8. Значения машиночитаемы. Цена без пробелов и валюты, валюта по ISO, даты в корректном формате.
  9. Проверено валидаторами. Страницы прошли Schema Markup Validator, Rich Results Test и Валидатор Яндекса без критических ошибок.
  10. Разметка в исходном HTML. Блоки JSON-LD присутствуют в коде страницы до выполнения JavaScript.
  11. Мониторинг настроен. Отчёты по структурированным данным в Вебмастере и Search Console на контроле.

Вывод

Микроразметка Schema.org — это язык, на котором интернет-магазин объясняет поисковику содержимое своих страниц: где цена, где наличие, где рейтинг, где путь навигации. Для каталога на 1С-Битрикс ядро — связка Product и Offer, дополненная отзывами, хлебными крошками и данными о компании. Формируется всё это один раз в шаблоне компонента из свойств товара, а не проставляется вручную у каждой позиции.

Главный принцип, вокруг которого держится вся работа, — честность разметки: значения обязаны совпадать с видимой страницей, рейтинг — опираться на реальные отзывы, наличие — на реальные остатки. Тогда разметка даёт то, ради чего затевается: расширенные сниппеты с ценой, наличием и звёздами, которые выделяют ваш магазин в выдаче и приводят более тёплый трафик. Внедрите ядро, проверьте страницы в валидаторах Яндекса и Google — и дайте поисковику время переобойти каталог. Больше практических разборов по технической оптимизации — в рубрике SEO и продвижение.

Частые вопросы

Какой формат микроразметки выбрать для интернет-магазина на 1С-Битрикс — JSON-LD или микроданные?

Для нового магазина рекомендуется JSON-LD: он не смешивается с вёрсткой, лежит отдельным блоком в коде страницы, легко формируется из свойств товара в шаблоне компонента и одинаково хорошо читается Яндексом и Google. Микроданные (атрибуты itemtype, itemprop в HTML) и RDFa тоже поддерживаются, но их сложнее сопровождать: при любой правке вёрстки разметка может «поехать». Часть штатных компонентов Битрикса выводит микроданные из коробки, поэтому на практике встречается смешанный вариант — но целевой формат для новых внедрений именно JSON-LD.

Где взять цену и наличие для разметки Offer в шаблоне товара?

Цена берётся из торгового каталога — из типа цены, который показывается покупателю на карточке (с учётом скидок и группы клиента), и подставляется в поле price вместе с priceCurrency. Наличие формируется из остатков и статуса товара: если товар в продаже — availability указывает на InStock, если закончился — OutOfStock, под заказ — PreOrder или BackOrder. Ключевое правило: значения в разметке должны совпадать с тем, что видит человек на странице. Если на карточке 2490 рублей и «в наличии», то и в JSON-LD должно быть 2490 и InStock, иначе поисковик посчитает разметку недостоверной.

Можно ли ставить рейтинг AggregateRating, если отзывов на сайте пока нет?

Нет. Рейтинг и число отзывов в разметке должны опираться на реальные, видимые на странице отзывы. Проставлять AggregateRating «для звёздочек в выдаче» без настоящих оценок — прямое нарушение правил и Яндекса, и Google: за это сниппет с рейтингом не покажут, а при систематических нарушениях можно получить ручные санкции. Пока отзывов нет, блок AggregateRating и Review просто не выводят. Как только на карточке появляются настоящие оценки — разметку добавляют и синхронизируют с их количеством и средним баллом.

Гарантирует ли микроразметка расширенный сниппет в поиске?

Нет, не гарантирует. Разметка — это необходимое условие, но не достаточное: она даёт поисковику структурированные данные, однако решение, показывать ли расширенный сниппет и в каком виде, остаётся за алгоритмом. На это влияют качество страницы, доверие к сайту, тип запроса и регион. Поэтому корректно говорить так: без разметки шансов на rich snippet почти нет, с корректной разметкой они появляются, но конкретный вид сниппета поисковик выбирает сам.

Нужно ли размечать все товары каталога или только часть?

Размечать нужно все карточки товаров — это делается один раз в шаблоне компонента catalog.element, и дальше разметка формируется автоматически для каждого товара из его свойств. Ручной труд тут не нужен: вы описываете правило формирования JSON-LD, а не заполняете разметку у каждой позиции. Отдельно размечают категории и листинги (BreadcrumbList, при необходимости ItemList), главную и служебные страницы (Organization, WebSite), а также контентные страницы блога (BlogPosting, FAQPage). Точечно вручную трогают только исключения.

Чем отличается разметка для Яндекса и для Google?

Базовый словарь один — Schema.org, и оба поисковика его понимают. Различия в деталях: у каждой системы свой список поддерживаемых типов сниппетов и свои требования к обязательным полям, а также свои валидаторы (Валидатор микроразметки Яндекса и Rich Results Test у Google). Практический подход — делать корректную разметку по Schema.org с полным набором ключевых полей Product и Offer, а затем проверять страницу в обоих валидаторах и устранять предупреждения каждого. Отдельную «разметку под Яндекс» и «разметку под Google» плодить не нужно.

Влияет ли микроразметка на ранжирование?

Прямым фактором ранжирования структурированные данные, как правило, не являются — они не поднимают сайт в выдаче сами по себе. Но они влияют косвенно и заметно: расширенный сниппет с ценой, наличием и рейтингом занимает больше места и выделяется, поэтому получает более высокий CTR, а поведенческие сигналы уже учитываются алгоритмами. Плюс разметка помогает поисковику точнее понять содержимое страницы. Так что ценность разметки — в кликабельности и корректном понимании контента, а не в «магическом» подъёме позиций.

Как обновлять разметку при изменении цены или остатка после обмена с 1С?

Специально ничего обновлять не нужно, если разметка формируется из тех же данных, что и видимая карточка. JSON-LD собирается в шаблоне компонента на основе актуальной цены и остатка, поэтому после обмена с 1С и сброса кэша страницы разметка пересобирается вместе с карточкой и автоматически показывает новые значения. Важно лишь, чтобы кэш карточки сбрасывался при изменении товара и разметка не кэшировалась отдельно от видимого контента — иначе цена в сниппете и цена на странице могут разойтись.

Поделиться:

Нужны расширенные сниппеты для вашего каталога?

Внедрим микроразметку Schema.org для Product и Offer, настроим отзывы и хлебные крошки, проверим страницы в валидаторах и свяжем разметку с обменом 1С. Рассчитаем работу по вашему каталогу.

Услуга «SEO-структура»

Редакция B2Bsite

Редакция студии B2Bsite. С 2014 года команда проектирует и оптимизирует интернет-магазины на 1С-Битрикс: SEO-структуру каталога, микроразметку Schema.org, умный фильтр и связку с обменом 1С для среднего и крупного бизнеса.

← Все статьи блога