web-dev-qa-db-fra.com

Schema.org: Avoir un produit comme propriété "à propos de"

Je souhaite définir un produit comme contenu principal d'une page Web à l'aide du balisage Schema.org. Mon idée avec le code HTML suivant est d’utiliser la structure:

 - Webpage
 -- WebPageElement (mainContentOfPage of Webpage)
 --- Product (about of WebPageElement which is mainContentOfPage of Webpage)

Toutefois, à l’aide de ce balisage, Google ne semble pas reconnaître les propriétés du produit, telles que aggregRating. L'outil de balisage structuré n'est satisfait que si je supprime la propriété "à propos de" sur Product. Mais alors la structure se décompose en:

- Webpage
-- WebPageElement (mainContentOfPage of Webpage)
-- Product

Le produit ne fait plus partie de WebPageElement. Même si j'utilise la propriété "mainContentOfPage" directement sur le nœud du produit, j'obtiens le même résultat: le produit n'est pas reconnu correctement. Il semble que le nœud Product ne puisse pas avoir d’éléments de commande. Alors, comment dois-je procéder?

<body itemscope itemtype="http://schema.org/WebPage">
    <div itemscope itemtype="http://schema.org/WebPageElement" itemprop="mainContentOfPage">
        <div itemprop="about" itemscope itemtype="http://schema.org/Product">
            <h1 itemprop="name">Acme Toaster Oven</h1>
            <div itemprop="description">It toasts AND bakes.</div>
            <div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">Rated <span itemprop="ratingValue">3</span>/5 based on <span itemprop="reviewCount">2</span> reviews</div>
            <div itemprop="review" itemscope itemtype="http://schema.org/Review"><span itemprop="name">A great toaster</span> - by <span itemprop="author">John</span>,
                <meta itemprop="datePublished" content="2013-10-16">October 26, 2013
                <div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating"><span itemprop="ratingValue">5</span>/5</div>
                <span itemprop="reviewBody">First I had bread.  Then I had toast.  Magic!</span>
            </div>
            <div itemprop="review" itemscope itemtype="http://schema.org/Review"><span itemprop="name">A small oven</span> - by <span itemprop="author">Mary</span>,
                <meta itemprop="datePublished" content="2013-10-16">October 26, 2013
                <div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating"><span itemprop="ratingValue">1</span>/5</div>
                <span itemprop="reviewBody">My 18-pound turkey wouldn't fit in this thing.</span>
            </div>
        </div>
    </div>
</body>

Le code HTML peut être testé ici: http://www.google.com/webmasters/tools/richsnippets

Mettre à jour

Après avoir expérimenté "itemref", j'ai obtenu de très bons résultats avec ce code dans outil de Google et Yandex et dans le Structured Data Linter .

<body itemscope itemtype="http://schema.org/WebPage">
    <div itemscope itemtype="http://schema.org/WebPageElement" itemprop="mainContentOfPage">
        <meta itemprop="about" itemscope itemtype="http://schema.org/Product" itemref="theProduct" />
    </div>
    <div id="theProduct">
        <h1 itemprop="name">Acme Toaster Oven</h1>
        <div itemprop="description">It toasts AND bakes.</div>
        <div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">Rated <span itemprop="ratingValue">3</span>/5 based on <span itemprop="reviewCount">2</span> reviews</div>
        <div itemprop="review" itemscope itemtype="http://schema.org/Review"><span itemprop="name">A great toaster</span> - by <span itemprop="author">John</span>,
            <meta itemprop="datePublished" content="2013-10-16">October 26, 2013
            <div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating"><span itemprop="ratingValue">5</span>/5</div>
            <span itemprop="reviewBody">First I had bread.  Then I had toast.  Magic!</span>
        </div>
        <div itemprop="review" itemscope itemtype="http://schema.org/Review"><span itemprop="name">A small oven</span> - by <span itemprop="author">Mary</span>,
            <meta itemprop="datePublished" content="2013-10-16">October 26, 2013
            <div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating"><span itemprop="ratingValue">1</span>/5</div>
            <span itemprop="reviewBody">My 18-pound turkey wouldn't fit in this thing.</span>
        </div>
    </div>
    </div>
</body>

Le seul effet secondaire est que les avis et aggregRating semblent se connecter à la fois à la page Web et au produit. Je ne sais pas si c'est mauvais.

6
Truls

La version de Schema.org de la semaine dernière ( version 2. ) a introduit deux propriétés pertinentes:

Cela vous permet d'omettre WebPageElement (ce qui n'est pas très utile au départ) et d'utiliser quelque chose comme ceci:

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

  <!-- properties about the web page -->

  <div itemprop="mainEntity" itemscope itemtype="http://schema.org/Product">
    <!-- properties about the product, which is the primary entity -->
  </div>

</body>
2
unor

Je suis tombé par hasard sur un article disant qu'il serait peut-être nécessaire de déclarer itemprop dans l'élément html, comme ceci:

<html lang="sv" itemscope itemtype="http://schema.org/Product" itemprop="[canonical]">

où [canonique] doit être remplacé par le lien canonique actuel de la page.

Je ne sais pas si cela résoudra le problème. Si ce n'est pas le cas, il existe un créateur de schéma qui peut être utile à l'adresse http://schema-creator.org/product.php

0
googlify

Je suis d'accord avec la réponse de googlify. Aussi, plutôt que d'avoir à utiliser schema.org/Product. Vous pourriez envisager d'utiliser schema.org/Offer à la place, puis avec itemprop = vous propose de vous aider à l'intégrer comme vous le souhaitez. Bien, suivez mon conseil et arrêtez d’utiliser la balise itemtype schema.org/WebPageElement ). C’est excessif et inutile. vous pouvez vous en tirer simplement en utilisant le itemprop="mainContentOfPage" et cela fonctionnera bien. Veillez simplement à ajouter les propriétés sameAs, url et about si vous allez utiliser mainEntity ou mainEntityOfPage.

0
Joel Glenn Wright