Из чего состоит разметка товара
Главная сущность — сам товар, к которой привязаны вложенные: предложение с ценой, необязательный агрегированный рейтинг и бренд. Такая структура повторяет то, что пользователь видит на карточке.
Обязательные и рекомендуемые свойства
| Свойство | Статус | Пояснение |
|---|---|---|
name | Обязательное | Название товара |
offers | Обязательное для цены | Цена, валюта и наличие |
image | Рекомендуемое | Фото товара |
description | Рекомендуемое | Краткое описание |
sku, gtin | Рекомендуемое | Артикул и штрихкод |
brand | Рекомендуемое | Название бренда |
aggregateRating | Необязательное | Только при наличии реальных отзывов |
Пример разметки
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Диван «Альфа»",
"image": "https://example.ru/img/alfa.jpg",
"sku": "ALFA-01",
"brand": { "@type": "Brand", "name": "Пример-Мебель" },
"offers": {
"@type": "Offer",
"price": "45900",
"priceCurrency": "RUB",
"availability": "https://schema.org/InStock",
"url": "https://example.ru/divany/alfa/"
}
}
</script>
Значения наличия
| Значение | Смысл |
|---|---|
InStock | Товар в наличии |
OutOfStock | Товара нет в наличии |
PreOrder | Доступен по предзаказу |
BackOrder | Ожидается поступление |
Discontinued | Снят с производства |
Правила и типичные ошибки
- Цена записывается числом без пробелов и символа валюты, дробная часть отделяется точкой; валюта указывается отдельно кодом, например RUB.
- Цена и наличие в разметке должны совпадать с видимыми на странице в тот же момент.
- Разметка Product относится к странице об одном товаре, а не к странице категории со списком.
- Рейтинг допустим только при реальных отзывах, которые видны пользователю.
Если у товара несколько предложений или вариантов, используют расширенный вариант — Offer и AggregateOffer.
Товары с вариантами: размер, цвет, комплектация
Если у товара несколько вариантов, решение зависит от того, есть ли у каждого свой адрес.
| Как устроен каталог | Как размечать |
|---|---|
| У каждого варианта своя страница и свой адрес | Отдельный Product на каждой странице |
| Все варианты на одной странице с выбором цвета или размера | Один Product; при разных ценах — AggregateOffer |
| Вариант меняет только внешний вид, цена одна | Один Product с одним Offer |
Как не допустить расхождения данных
- Формируйте разметку из тех же полей базы, из которых выводится цена и наличие на странице.
- При обновлении цены сбрасывайте кеш страницы вместе с разметкой — как это делается, описано в статье про кеширование и устаревшие страницы.
- Периодически выгружайте цены из разметки краулером и сверяйте с базой.
Расхождение цен между страницей и разметкой — одна из самых частых причин, по которым расширенные результаты для товаров пропадают.
Частые вопросы
Как записывать цену в разметке?
Числом без пробелов и знака валюты, с точкой для дробной части, а код валюты указывают отдельным свойством, например RUB.
Можно ли размечать Product на странице категории?
Нет: разметка Product предназначена для страницы об одном товаре, а для списка позиций используют другие типы, например ItemList.
Что делать, если товар закончился?
Изменить значение наличия на OutOfStock и обновлять его вместе с содержимым страницы, не оставляя устаревшее значение InStock.
Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.