web-dev-qa-db-fra.com

HTML5 Microdata - itemref à un autre itemscope (CollectionPage contenant tous les blogs)

Sur l'outil de test structuré de Google, cela montre qu'il s'agit d'instances distinctes. J'essaye de les avoir la liste les uns aux autres.

Voici ce que j'ai maintenant:

<section class="primary content-area" itemscope itemtype="http://schema.org/CollectionPage">
    <meta itemprop="name headline" content="Stepanie Schaefer" />
    <div itemid="http://www.cheapflights.com/news/author/stephanieschaefer/" itemscope itemtype="http://schema.org/Person">
       <h1 itemprop="headline"><span itemprop="name">Stephanie Schaefer</span></h1>
       <p itemprop="description">Stephanie is a Boston native who loves to find ways to escape New England winters. She’s thrown a coin in the Trevi Fountain, sipped wine on a vineyard in Northern Spain and swam in the Mediterranean Sea. Although she hasn’t been everywhere, it’s definitely on her list.</p>
    </div>

        <div itemscope itemtype="http://schema.org/BlogPosting">
            <h1 itemprop="headline">Top 10 booze-infused getaways</h1>
            <link itemprop="author" href="http://www.cheapflights.com/news/author/stephanieschaefer/" />
            <p itemprop="description">Description of Blog</p>
        </div>

        <div itemscope itemtype="http://schema.org/BlogPosting">
            <h1 itemprop="headline">Top 10 booze-infused getaways</h1>
            <link itemprop="author" href="http://www.cheapflights.com/news/author/stephanieschaefer/" />
            <p itemprop="description">Description of Blog</p>
        </div>
</section>

J'ai essayé de les lier avec itemref mais cela ne semble toujours pas fonctionner.

    <section class="primary content-area" itemscope itemtype="http://schema.org/CollectionPage" itemref="blogs1 blogs2">
    <meta itemprop="name headline" content="Stepanie Schaefer" />
    <div itemid="http://www.cheapflights.com/news/author/stephanieschaefer/" itemscope itemtype="http://schema.org/Person">
       <h1 itemprop="headline"><span itemprop="name">Stephanie Schaefer</span></h1>
       <p itemprop="description">Stephanie is a Boston native who loves to find ways to escape New England winters. She’s thrown a coin in the Trevi Fountain, sipped wine on a vineyard in Northern Spain and swam in the Mediterranean Sea. Although she hasn’t been everywhere, it’s definitely on her list.</p>
    </div>
        <div itemscope itemtype="http://schema.org/BlogPosting" id="blogs1">
            <h1 itemprop="headline">Top 10 booze-infused getaways</h1>
            <link itemprop="author" href="http://www.cheapflights.com/news/author/stephanieschaefer/" />
            <p itemprop="description">Description of Blog</p>
        </div>

        <div itemscope itemtype="http://schema.org/BlogPosting" id="blogs2">
            <h1 itemprop="headline">Top 10 booze-infused getaways</h1>
            <link itemprop="author" href="http://www.cheapflights.com/news/author/stephanieschaefer/" />
            <p itemprop="description">Description of Blog</p>
        </div>
</section>

Comment relions-nous les deux objets "CollectionPage" et "BlogPosting"?

1
Yen Deng

Vous devez utiliser les propriétés (itemprop) si vous souhaitez associer des éléments.

L’attribut itemref peut être utilisé si vous ne pouvez pas imbriquer les éléments, mais vous devez tout de même utiliser des propriétés. Dans votre exemple, il semble que vous puissiez imbriquer les éléments. Il n'est donc pas nécessaire d'utiliser itemref.

Comme décrit dans ma réponse à votre question précédente , vous pouvez utiliser mainEntity avec une valeur ItemList (et dans le ItemList, itemListElement pour chaque BlogPosting).

Une autre option consiste à utiliser hasPart . C’est moins expressif que la méthode mainEntity/ItemList, et utiliser blogPost (dans un Blog) peut être préférable, mais c’est très simple, cela permet donc d’illustrer son fonctionnement dans Microdata.

Imbrication (sans itemref)

<section itemscope itemtype="http://schema.org/CollectionPage">

  <article itemprop="hasPart" itemscope itemtype="http://schema.org/BlogPosting">
  </article>

  <article itemprop="hasPart" itemscope itemtype="http://schema.org/BlogPosting">
  </article>

</section>

itemref (sans imbrication)

<section itemscope itemtype="http://schema.org/CollectionPage" itemref="blogs1 blogs2">
</section>

<!-- don’t nest this 'article' inside another element with 'itemscope' -->
<article itemprop="hasPart" itemscope itemtype="http://schema.org/BlogPosting" id="blogs1">
</article>

<!-- don’t nest this 'article' inside another element with 'itemscope' -->
<article itemprop="hasPart" itemscope itemtype="http://schema.org/BlogPosting" id="blogs2">
</article>

(Le SDTT de Google générera une valeur @id pour cet exemple, en utilisant les valeurs id, mais il s’agit probablement d’un bogue . Vous pouvez "écraser" la valeur en attribuant à chaque BlogPosting une valeur itemid.

1
unor