Могу ли я использовать один и тот же "тип элемента" в микроданных дважды?
У меня есть элемент на моем веб-сайте, который показывает последние обновления моего веб-сайта.
Моя текущая структура веб-сайта такова:
<body itemscope itemtype="http://schema.org/webpage"
<div itemscope itemtype="http://schema.org/WPSideBar>
<div>...some text...</div>
<div>last update: 23/1/2014</div> //last update for whole site
<div/>
</body>
"Последнее обновление" предназначено для всего веб-сайта, а не для боковой панели!
Могу ли я использовать itemtype
дважды для решения этой проблемы?
Например, считаете ли вы, что это правильно?
<body itemscope itemtype="http://schema.org/webpage"
<div itemscope itemtype="http://schema.org/WPSideBar>
<div>...some text...</div>
<div itemscope itemtype="http://schema.org/webpage">
<span itemscope="name">last update: </span>
<time itemprop="datePublished" datetime="2014-01-23 13:52:00">23/1/2014</time>
</div>
<div/>
</body>
2 answers
Нет, вы не должны добавлять несколько элементов, которые примерно одинаковы на одной странице.
Если datePublished
является датой публикации для всей вашей страницы, она должна быть вложена в WebPage
, а не в WPSideBar
.
Вы могли бы использовать itemref
атрибут, если вы не можете вложить его непосредственно в WebPage
, но вам все равно придется удалить его из WPSideBar
. Если только вы не хотите, чтобы эта дата была связана с WPSideBar
в дополнение. Если это тот случай, вы могли бы использовать:
<!-- here the 'datePublished' applies to both, the WebPage *and* the WPSideBar -->
<div itemscope itemtype="http://schema.org/WebPage" itemref="foobar">
<div itemscope itemtype="http://schema.org/WPSideBar">
<time itemprop="datePublished" datetime="2014-01-23 13:52:00" id="foobar">23/1/2014</time>
</div>
</div>
(Обратите внимание, что это http://schema.org/WebPage
, а не http://schema.org/webpage
.)
Вы можете использовать один и тот же элемент или схему более одного раза, например, имея несколько продуктов на одной веб-странице, но в этой ситуации вы бы неправильно отметили, что на странице находятся ДВА элемента WebPage
. Вместо этого вам нужно иметь только один, но справляться с WPSideBar
посередине. Основываясь на вашем описании, dateModified
тоже звучит лучше, чем datePublished
. Этот код использует hasPart
для размещения WPSideBar
внутри WebPage
.
<body itemscope itemtype="http://schema.org/WebPage">
<div itemprop="hasPart" itemscope itemtype="http://schema.org/WPSideBar">
<div>...some text...</div>
<span itemscope="name">last update: </span>
<meta itemprop="dateModified" content="2014-01-23 13:52:00"/>
<time>23/1/2014</time> //last update for whole site
</div>
</div>
</body>
Результат на основе структурированных данных тестер
WebPage
hasPart [WPSideBar]:
dateModified: 2014-01-23T13:52:00
При этом устанавливается только измененная дата WPSideBar. Было бы разумнее установить дату только для элемента веб-страницы, что можно сделать, удалив эту строку WPSideBar из кода выше и тега <span>
, который ничего не делает, кроме названия боковой панели:
<div itemprop="hasPart" itemscope itemtype="http://schema.org/WPSideBar>
Если две даты могут отличаться, то вы можете сохранить строку выше и использовать код
<body itemscope itemtype="http://schema.org/WebPage"><meta itemprop="dateModified" content="2014-01-20 00:00:00"/>
<div itemprop="hasPart" itemscope itemtype="http://schema.org/WPSideBar">
<div>...some text...</div>
<span itemscope="name">last update: </span>
<meta itemprop="dateModified" content="2014-01-23 13:52:00"/>
<time>23/1/2014</time> //last update for whole site
</div>
</div>
</body>
Результат тестирования структурированных данных Google
WebPage
dateModified: 2014-01-20T13:00:00
hasPart [WPSideBar]:
dateModified: 2014-01-23T13:52:00
Без свойства hasPart
WebPage
dateModified: 2014-01-20T13:00:00
WPSideBar
dateModified: 2014-01-23T13:52:00
Объяснение
WPSideBar - это WebPageElement
, который может быть связан (вложен внутрь) веб-страницы с помощью itemprop="hasPart"
- это свойство, унаследованное от CreativeWork
. Это вложенность структурированных данных.
Ваша дата имеет нестандартный формат, поэтому я использовал Невидимый самозакрывающийся мета-тег для представления этой даты в правильном формате это один из разрешенных причины наличия скрытых структурированных данных. Изначально у вас было "дата-время" вместо "содержание".
В исходном коде было несколько синтаксических ошибок, включая незамкнутый тег <body>
, в следующий раз используйте HTML-валидатор/линтер перед созданием вопроса о структурированных данных - это экономит много работы по сортировке ошибок структурированных данных, которые, как оказалось, не вызваны структурированными данными.