В статье разобраны неочевидные случаи применения микроразметки Product с примерами использования в формате JSON-LD на основе рекомендаций Google. Причина в том, что документация Яндекса по этому вопросу невероятно скудна, а «платоны» отказываются помогать:
Два варианта разметки Product
Внутри микроразметки «для товаров», фактически присутствуют два подварианта, в зависимости от функционала страницы:
- Если на странице товар продаётся непосредственно (можно «положить в корзину и оплатить»), то такой вариант разметки называется «информация об ассортименте» (Merchant listings).
- Если товар на странице купить непосредственно нельзя, то такая микроразметка называется «данные о товаре» (Product snippets).
Для этих вариантов даже обязательные поля выглядят по-разному.
Для целей статьи нам нужно знать, что разметка «ассортимента» более детальная и включает в себя «данные о товаре».
Микроразметка вариативного товара
Допустим, у нас на странице присутствует несколько вариантов одного и того же товара (цвета, размеры и т.п.). Например, 27 вариантов «букета роз» (отличается числом цветов в букете) с диапазоном цен от 1490 до 13000 рублей. Важно, что все букеты мы делаем сами, то есть наш интернет-магазин.
Казалось бы, в этой ситуации лучше всего использовать тип AggregateOffer в поле «offers».
Однако, Google прямо запрещает это:
Кроме этого, эксперты из комьюнити Google «пугают» возможными санкциями:
Санкции для микроразметки означают, что разметка конкретной страницы будет проигнорирована Google. На ранжирование это никак не повлияет.
из твитора John Mueller
Как же, в нашем случае, указать несколько цен для товарного предложения типа Offer?
Внимательное изучение показывает, что кроме очевидного поля «price», у типа Offer есть структурированное поле «priceSpecification». Им-то мы и воспользуемся, заполнив его для дочернего типа UnitPriceSpecification (типа, «ЦенаЗаШтуку»)
Вот — пример нужной микроразметки:
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"@id":"#buketRoz",
"name": "Букет роз",
"image":["https://example.com/image1.jpg",
"https://example.com/image2.jpg",
"https://example.com/image3.jpg"
],
"itemCondition": "http://schema.org/NewCondition",
"description":"Хотите создать незабываемый момент и подарить букет, который запомнится навсегда? Тогда вам нужно купить букет роз",
"manufacturer": {"@id":"#NashaFirma"},
"brand": {
"@type": "Brand",
"url":"https://flowers.ru/",
"name": "Цветастые цветы"
},
"aggregateRating": {"@id":"#NashRating"},
"offers": {
"@type": "Offer",
"priceCurrency": "RUB",
"availability": "https://schema.org/InStock",
"seller": {"@id":"#NashaFirma" },
"price" : 1490,
"priceValidUntil":"2099-12-31",
"priceSpecification" : {
"@type": "UnitPriceSpecification",
"priceType":"https://schema.org/ListPrice",
"validThrough": "2099-12-31",
"priceCurrency": "RUB",
"minPrice": 1490,
"maxPrice": 13000
},
"hasMerchantReturnPolicy": {"@id":"#NashVozvrat"},
"shippingDetails": {"@id":"#NashaDostavka"}
}
}
</script>
в разметке подразумевается, что описание компании, её рейтинг, политика возврата и условия доставки созданы с нужными полями @id в другом месте.
Разбирался в применении правильной микроразметки Алексей, SEO-падаван.
Источники, использованные при написании статьи:
- Документация Google по структурированным данным на русском
- Инструмент проверки расширенных результатов Google
- Словарь микроразметки shema.org с валидатором
- Перевод schema.org на русский: ruschema.org
- Форум сообщества Google
- Твиттер (или, его уже надо Х называть?) John «it depends» Mueller