Как использовать 'itemref' Microdata для ссылки на аналогичные продукты, которые перечислены за пределами области действия продукта? - PullRequest
1 голос
/ 07 октября 2019

Я пытаюсь использовать микроданные для определения своего веб-сайта, используя определения Schema.org. На ItemPage я отображаю информацию о продукте. Кроме того, я хочу связать аналогичные продукты с текущим продуктом , пока соответствующий продукт отображается за пределами области действия текущего продукта.

Я пытался добиться этого с помощью itemref атрибут. Тем не менее, когда я просматриваю страницу в Инструмент тестирования структурированных данных , он не показывает, что связанные продукты являются частью узла ItemPage.

<body itemscope itemtype="http://schema.org/ItemPage">
  <header itemprop="hasPart" itemscope itemtype="http://schema.org/WPHeader">
  </header>

  <article itemprop="mainEntity" itemscope itemtype="http://schema.org/Product" id="details_10">
    <h2 itemprop="name">Product 10</h2>
  </article>

  <aside>
    <article itemref="details_10" itemscope itemtype="http://schema.org/Product">
      <h3 itemprop="name">Product 20</h3>
    </article>

    <article itemref="details_10" itemscope itemtype="http://schema.org/Product">
      <h3 itemprop="name">Product 30</h3>
    </article>
  </aside>

  <footer itemprop="hasPart" itemscope itemtype="http://schema.org/WPFooter">
  </footer>

</body>

1 Ответ

1 голос
/ 07 октября 2019

Его нужно использовать наоборот:

  • Атрибут itemref должен находиться в элементе, представляющем элемент, к которому вы хотите добавить свойства. Это будет основной продукт в вашем случае.

  • Элементам, которые вы хотите добавить, нужен атрибут itemprop (который отсутствует, вместе со свойством isSimilarTo), иid, на который ссылается атрибут itemref. Это были бы аналогичные продукты в вашем случае.

Итак, это даст:

<body itemscope itemtype="http://schema.org/ItemPage">

 <article itemprop="mainEntity" itemscope itemtype="http://schema.org/Product" itemref="details_20 details_30"></article>

 <aside>
   <article id="details_20" itemprop="isSimilarTo" itemscope itemtype="http://schema.org/Product"></article>
   <article id="details_30" itemprop="isSimilarTo" itemscope itemtype="http://schema.org/Product"></article>
 </aside>

</body>

Проблема с этой разметкой состоит в том, что два свойства isSimilarToдобавить к ItemPage тоже (потому что они вложены в него), что было бы неправильно. Чтобы избежать этого, лучшим решением было бы не указывать ItemPage для элемента body, а для div или аналогичного.

<body>

 <div itemscope itemtype="http://schema.org/ItemPage">

   <article itemprop="mainEntity" itemscope itemtype="http://schema.org/Product" itemref="details_20 details_30"></article>

 </div>

 <aside>
   <article id="details_20" itemprop="isSimilarTo" itemscope itemtype="http://schema.org/Product"></article>
   <article id="details_30" itemprop="isSimilarTo" itemscope itemtype="http://schema.org/Product"></article>
 </aside>

</body>

(Вы также можете использовать itemref дляизбегайте вложения основного Product в ItemPage. Это также позволит указать ItemPage в элементе head, например.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...