Могу ли я использовать один и тот же "тип элемента" в микроданных дважды?


У меня есть элемент на моем веб-сайте, который показывает последние обновления моего веб-сайта.

Моя текущая структура веб-сайта такова:

<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>
Author: unor, 2014-03-10

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.)

 0
Author: unor, 2017-05-23 12:37:07

Вы можете использовать один и тот же элемент или схему более одного раза, например, имея несколько продуктов на одной веб-странице, но в этой ситуации вы бы неправильно отметили, что на странице находятся ДВА элемента 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-валидатор/линтер перед созданием вопроса о структурированных данных - это экономит много работы по сортировке ошибок структурированных данных, которые, как оказалось, не вызваны структурированными данными.

 0
Author: Mousey, 2015-07-29 15:50:49