web-dev-qa-db-fra.com

Schema.org - Disposition hiérarchique ou lâche?

Je suis en train de baliser les pages produits d'un magasin en ligne à l'aide de Schema.org. Jusqu'à présent, j'ai utilisé une structure hiérarchique dans laquelle la balise body est marquée comme ItemPage. Ensuite, je peux utiliser la propriété breadcrumb sur ItemPage pour ma chapelure, et une autre propriété mainEntity qui est un Product. Cela ne donne aucun avertissement dans le outil de test de données structurées - la hiérarchie est affichée ici comme je le souhaitais.

Mais je me demande si Google accepterait plus facilement mon balisage Product/Offer s'il n'était pas groupé dans un ItemPage. Autrement dit, devrais-je ignorer ItemPage et avoir simplement le Product en tant qu'éléments détachés, ainsi que de la chapelure et d'autres listes d'objets?

Ce qui est mieux?

Exemple de ma mise en page hiérarchique:

<body itemscope itemtype="http://schema.org/ItemPage">
    <div>Some other stuff...</div>
    <ol itemprop="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList">
        <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
            <a href="/a" itemprop="item"><span itemprop="name">A</span></a>
        </li>
        <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
            <a href="/b" itemprop="item"><span itemprop="name">B</span></a>
        </li>
    </ol>
    <div itemprop="mainEntity" itemscope itemtype="http://schema.org/Product">
        <img src="/image.jpg" itemprop="image">
        <h1 itemprop="name">My Product</h1>
        <div itemprop="description">Example text</div>
        <div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
            <meta itemprop="price" content="129">
            <meta itemprop="priceCurrency" content="SEK">
            <link itemprop="availability" href="http://schema.org/InStock">
            <meta itemprop="itemCondition" itemtype="http://schema.org/OfferItemCondition" content="http://schema.org/NewCondition">
        </div>
    </div>
</body>

Exemple de marquage en vrac: (La BreadcrumbList et le produit ne sont "itemprop" de rien)

<body>
    <div>Some other stuff...</div>
    <ol itemscope itemtype="http://schema.org/BreadcrumbList">
        <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
            <a href="/a" itemprop="item"><span itemprop="name">A</span></a>
        </li>
        <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
            <a href="/b" itemprop="item"><span itemprop="name">B</span></a>
        </li>
    </ol>
    <div itemscope itemtype="http://schema.org/Product">
        <img src="/image.jpg" itemprop="image">
        <h1 itemprop="name">My Product</h1>
        <div itemprop="description">Example text</div>
        <div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
            <meta itemprop="price" content="129">
            <meta itemprop="priceCurrency" content="SEK">
            <link itemprop="availability" href="http://schema.org/InStock">
            <meta itemprop="itemCondition" itemtype="http://schema.org/OfferItemCondition" content="http://schema.org/NewCondition">
        </div>
    </div>
</body>
5
Truls

Votre exemple de structure hiérarchique est très proche de l'utilisation suggérée de la propriété mainEntity suggérée par la documentation officielle du protocole:

Comme mainEntity définition " indique l'entité principale décrite dans une page ", , cela convient parfaitement à votre cas , ma suggestion est donc que vous choisissiez ce code bien structuré, Google devrait le comprendre parfaitement.

C'est le code approprié pour cet exemple utilisé dans schema.org propriété principale:

<body itemscope itemtype="http://schema.org/WebPage">
...
<div itemprop="breadcrumb">
  <a href="category/books.html">Books</a> >
  <a href="category/books-literature.html">Literature & Fiction</a> >
  <a href="category/books-classics">Classics</a>
</div>
<div itemprop="mainEntity" itemscope itemtype="http://schema.org/Book">
<img itemprop="image" src="catcher-in-the-rye-book-cover.jpg"
     alt="cover art: red horse, city in background"/>
<span itemprop="name">The Catcher in the Rye</span> -
 <link itemprop="bookFormat" href="http://schema.org/Paperback">Mass Market Paperback
by <a itemprop="author" href="/author/jd_salinger.html">J.D. Salinger</a>
<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
  <span itemprop="ratingValue">4</span> stars -
  <span itemprop="reviewCount">3077</span> reviews
</div>
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
  Price: $<span itemprop="price">6.99</span>
  <meta itemprop="priceCurrency" content="USD" />
  <link itemprop="availability" href="http://schema.org/InStock">In Stock
</div>
Product details
<span itemprop="numberOfPages">224</span> pages
Publisher: <span itemprop="publisher">Little, Brown, and Company</span> -
 <meta itemprop="datePublished" content="1991-05-01">May 1, 1991
Language: <span itemprop="inLanguage">English</span>
ISBN-10: <span itemprop="isbn">0316769487</span>
</div>
...
</body>

L'exemple ci-dessus et le vôtre, les deux sont en cours de traitement complet par https://search.google.com/structured-data/testing-tool avec des résultats très similaires.

2
marcanuy