Почему моя разметка itemprop="изображение" неверна?
Я экспериментировал с микроданными и решил попробовать это в своем блоге. Оказывается, шаблон, который я использовал, уже добавил некоторую разметку. Это было не очень здорово, и поэтому я сделал все, что мог.
Чтобы попытать счастья, я добавил больше разметки в свой последний пост, но инструмент тестирования структурированных данных Google (SDTT) недоволен атрибутами itemprop='image'
, и я не уверен, почему.
Это мой понимая, игнорируя весь промежуточный код, что я структурировал данные таким образом:
<div itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
<div itemprop='articleBody'>
<a href="1.png" itemprop="url"><img itemprop="image sharedContent" src="1.png" /></a>
<a href="2.png" itemprop="url"><img itemprop="image sharedContent" src="2.png" /></a>
<a href="3.png" itemprop="url"><img itemprop="image sharedContent" src="3.png" /></a>
</div>
</div>
И мне это кажется правильным.
BlogPosting
может иметь свойства articleBody
и image
в соответствии с https://schema.org/BlogPosting , но в соответствии с SDTT:
Атрибут itemtype имеет недопустимое значение.
Действительно, я только что попробовал SDTT с приведенным выше примером кода, и он не проходит проверку.
Так что я очевидно, чего-то не хватает. Что я делаю не так?
2 answers
Schema.org/BlogPosting изображение разрешает ImageObject и URL, однако Google разрешает только ImageObject, отсюда и ошибка. Предполагаемая разметка:
<!-- my code -->
<div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
<img src="image.jpg" itemprop="url">
</div>
Еще одно несоответствие schema.org/ImageObject рекомендует contentUrl
, но Google рекомендует url
, следовательно, мое использование выше.
В ответ на код вашего комментария ваша структура по-прежнему неверна. Я разберусь с этим по порядку строка:
<!-- your code -->
<div itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
Незначительный момент, но если вы не собираетесь использовать XHTML, itemscope='itemscope'
неверно. Используйте itemscope
(как вы сделали позже).
<!-- your code -->
<div itemprop='articleBody'>
<div itemscope itemtype="http://schema.org/ImageObject"/>
Ваш объект ImageObject является дочерним объектом свойства articleBody, но вы не связали его таким образом. Таким образом, у вас есть тело статьи без связанных свойств и несвязанный объект ImageObject. Вы должны использовать
<!-- my code -->
<div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
Кроме того, />
неверно, даже если вы пытаетесь использовать XHTML, так как у этого элемента есть дочерние элементы и закрывающий </div>
. Просто используйте >
, как я включил в приведенный выше фрагмент.
<!-- your code -->
<a href="1.png" itemprop="url"><img itemprop="image sharedContent" src="1.png" /></a>
Что здесь делает sharedContent? sharedcontent ожидает творческой работы при использовании в качестве свойства SocialMediaPosting - никогда в качестве свойства ImageObject и никогда в img.
Ваш другой фрагмент кода , который размещает свойство sharedContent, как показано ниже, также неверен.
<!-- your code -->
<div itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
<div itemprop='articleBody'>
<div itemprop='sharedContent'>
<div itemscope itemtype="http://schema.org/ImageObject"/>
…
Хотя sharedContent теперь находится в нужном месте, он все равно должен быть творческой работой. Ваши объекты изображений являются по-прежнему не связан с размещением в блоге, как показывает Инструмент тестирования структурированных данных.
Ниже приведен правильный код.
<!-- my code -->
<div itemscope itemtype="http://schema.org/BlogPosting">
<div itemprop="articleBody">
<div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
<a href="1.png" itemprop="url"><img itemprop="image" src="1.png"></a>
</div>
<div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
<a href="2.png" itemprop="url"><img itemprop="image" src="2.png"></a>
</div>
<div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
<a href="3.png" itemprop="url"><img itemprop="image" src="3.png"></a>
</div>
</div>
</div>
У меня была аналогичная проблема с тестером структурированных данных Google, помечающим мои изображения как недействительные. По-видимому, он не принимает изображения, источником которых является домен локального хоста. Как только я развернул на промежуточном сервере структурированную разметку, она прошла проверку.