Пожалуйста, рассмотрите следующий код, помеченный атрибутами для предоставления микроданных:
<!DOCTYPE html>
<html>
<head>
<title>Micro data test - Normal version</title>
</head>
<body>
<div itemscope itemtype="http://schema.org/Product">
<h1 itemprop="name">Product name</h1>
<img alt="" itemprop="image" src="http://placehold.it/200x200" />
<div itemprop="description">This is the product description.</div>
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<meta content="in_stock" itemprop="availability" />
<span content="GBP" itemprop="priceCurrency">£</span><span itemprop="price">100.00</span>
</div>
</div>
</body>
</html>
Использование инструмента тестирования структурированных данных Google дает положительные результаты.
Это хорошо в тестовом примере, однако мы хотим внедрить микроданные на различных сайтах, структура HTML которых сильно различается. Для реализации атрибутов таким способом потребуется, чтобы кто-то вручную редактировал разметку HTML на каждом из сайтов в отдельности.
Предпочтительно, мы хотели бы иметь возможность вызывать одну функцию, которая упаковывает все микроданные в одном месте; технически это возможно с помощью мета-тегов следующим образом:
<!DOCTYPE html>
<html>
<head>
<title>Micro data test - Meta tag version</title>
</head>
<body>
<meta itemscope itemtype="http://schema.org/Product" itemref="microName microImage microDescription microOffer" />
<meta id="microName" itemprop="name" content="Product name" />
<link id="microImage" itemprop="image" href="http://placehold.it/200x200" />
<meta id="microDescription" itemprop="description" content="This is the product description." />
<meta id="microOffer" itemprop="offers" itemscope itemtype="http://schema.org/Offer" itemref="microCurrency microPrice microAvail" />
<meta id="microAvail" itemprop="availability" content="in_stock" />
<meta id="microCurrency" itemprop="priceCurrency" content="GBP" />
<meta id="microPrice" itemprop="price" content="100.00" />
<div>
<h1>Product name</h1>
<img alt="" src="http://placehold.it/200x200" />
<div>This is the product description.</div>
<div>£100.00</div>
</div>
</body>
</html>
Использование инструмента тестирования структурированных данных Google дает те же положительные результаты, что и первый тест.
Для справки (мы бы никогда не сделали этого на реальном сайте) Инструмент тестирования структурированных данных Google возвращает ошибку, если вы пытаетесь передать микроданные, скрытые с помощью CSS.
Итак, и нормальная разметка, и разметка мета-тегов дают одинаковые результаты, однако у меня есть некоторые опасения из-за следующих утверждений от Google и Schema.org:
https://support.google.com/webmasters/answer/146750 гласит:
В общем, Google будет использовать только размеченные данные, которые видны пользователю. Скрытые данные будут игнорироваться. Однако в некоторых случаях может быть полезно предоставить как машиночитаемую, так и читаемую человеком версию вашего контента. Например, хотя текстовая строка «День рождения Элвиса» важна для многих читателей, она не так значима для поисковых систем, как 1935-01-08. Точно так же читатели могут определить значение символа $, но может быть полезно конкретно указать поисковым системам, указаны ли ваши цены в песо или в долларах.
http://schema.org/docs/gs.html утверждает (в связи с использованием мета-тегов):
Эту технику следует использовать с осторожностью. Используйте мета с содержанием только для информации, которая не может быть размечена иначе.
http://schema.org/docs/faq.html#13 гласит:
Как правило, вы должны размечать только контент, который виден людям, посещающим веб-страницу, а не контент в скрытых элементах div или других скрытых элементах страницы.
Мои вопросы:
- Хотя ошибки не возвращаются, будут ли мы наказаны поисковыми системами за использование мета-тегов таким образом (т. Е. Дублирующийся контент, сокрытие информации и т. Д.)?
- Если это не подходит, можете ли вы предложить какой-либо способ отделения микроданных от фактических данных, или нам придется кусать маркеры и внедрять их в HTML в каждом конкретном случае?