webentwicklung-frage-antwort-db.com.de

"position" -Eigenschaft für ItemList mit Artikeln aus der Produktliste erforderlich?

Ich habe ein Problem: Das Test-Tool für strukturierte Daten von Google gibt einen Fehler aus:

Tag position existiert nicht. Es ist erforderlich.

 Tag position doesn't exist

Ich füge es dem Markup hinzu. Dann bekomme ich diesen Fehler:

Die Eigenschaft Position ist für ein Objekt vom Typ Product nicht gültig.

 Position property is not valid for an object of type Product

Hier ist mein Markup:

<table id="sale_table" itemscope="" itemtype="http://schema.org/ItemList">
    <tbody>
            <tr itemprop="itemListElement" itemscope="" itemtype="http://schema.org/Product">
                <td class="sale_art_td" itemprop="productID">10496278</td>
                <td class="sale_brand_td" itemprop="brand"><span itemprop="name ">--</span></td>
                <td class="sale_name_td" itemprop="name">10496278 / Крышка трамблера Daewoo Nexia,Espero DD</td>
                <td class="sale_am_td">1.00</td>
                <td class="sale_price_td" itemprop="offers" itemscope="" itemtype="http://schema.org/Offer"><meta itemprop="priceCurrency" content="RUR"><span itemprop="price">341.50</span></td>
                <td class="sale_buy_td"><a href="javascript:void(0);" class="sale_buy_link" data-id="63455914" data-query="10496278">Купить</a><!--<img src="/upload/badge/sale_cart.png" />--></td>
                <td class="hidden">
                    <meta itemprop="url" content="/partsearch/?q=10496278">
                                        <span itemprop="description">Распродажа: 10496278 / Крышка трамблера Daewoo Nexia,Espero DD по цене 341.50</span>
                </td>
            </tr>
                    <tr itemprop="itemListElement" itemscope="" itemtype="http://schema.org/Product">
                <td class="sale_art_td" itemprop="productID">76202sx0a12</td>
                <td class="sale_brand_td" itemprop="brand"><span itemprop="name ">HONDA</span></td>
                <td class="sale_name_td" itemprop="name">76202SX0A12</td>
                <td class="sale_am_td">1.00</td>
                <td class="sale_price_td" itemprop="offers" itemscope="" itemtype="http://schema.org/Offer"><meta itemprop="priceCurrency" content="RUR"><span itemprop="price">704.00</span></td>
                <td class="sale_buy_td"><a href="javascript:void(0);" class="sale_buy_link" data-id="63456060" data-query="76202sx0a12">Купить</a><!--<img src="/upload/badge/sale_cart.png" />--></td>
                <td class="hidden">
                    <meta itemprop="url" content="/partsearch/?q=76202sx0a12">
                                        <span itemprop="description">Распродажа: 76202SX0A12 по цене 704.00</span>
                </td>
            </tr>
    </tbody>
 </table> 
14
murrometz

Dies ist kein Fehler in Ihrem Code. Es bedeutet nur, dass Google ein bestimmtes Rich Snippet (oder eine ähnliche Funktion) nur dann anzeigt, wenn Sie diese Eigenschaft angeben.

Die position-Eigenschaft ist jedoch nicht für den Product-Typ definiert, sodass dies keinen Sinn macht.

Es scheint, dass dies ein neues Feature für strukturierte Daten von Google ist, das noch nicht dokumentiert ist, da es auf eine 404-Seite verweist: List Page Carousels . Vielleicht ist es noch in Arbeit und sie wollten den Scheck noch nicht in ihrem Test-Tool veröffentlichen.

Also ignoriere ich das jetzt einfach.

4
unor

Ich denke, dies ist ein Implementierungsfehler auf Google-Seite, der durch nicht explizite Dokumentation verursacht wurde:

https://schema.org/itemListElement erklärt eindeutig

Bestehende Entitäten eignen sich am besten für eine einfache, ungeordnete Liste der vorhandenen Elemente in Ihren Daten. ListItem wird mit geordneten Listen verwendet wenn Sie zusätzlichen Kontext zu dem Element in dieser Liste bereitstellen möchten oder wenn sich dasselbe Element an verschiedenen Stellen in verschiedenen Listen befindet. 

Hinweis: Die Reihenfolge der Elemente in Ihrem Markup reicht nicht aus, um die Reihenfolge oder die Elemente anzugeben. Verwenden Sie in solchen Fällen ListItem mit einer 'position'-Eigenschaft.

Gleichzeitig heißt es Werte, von denen erwartet wird, dass sie zu diesen Typen gehören sind:

  • Listenpunkt 
  • Text 
  • Ding

=> Dies bedeutet implizit , dass das position -Element nur für sortierte Listen erforderlich ist, die wiederum verlangen, dass das Thing-Element in einem ListItem -Element enthalten ist , die die itemprop Position anbietet.

Es bedeutet auch implizit dass, wenn ItemListElementText oder Thing ist, die Liste als Unordered betrachtet werden sollte.

Nur so ist die Dokumentation sinnvoll. Ich gehe davon aus, dass die implizite Verbindung übersehen wurde.

Ich denke, die geeignete Maßnahme ist, einen Fehlerbericht für das Structured Data Testing Tool einzureichen und mit den Warnungen für jetzt oder die Product in einem _ zu leben.ListItem -Element als Problemumgehung.

4
Richard Heider

Malefique ist von meinem Test auf die richtige Lösung.

Dieser Code wird vollständig mithilfe des Testwerkzeugs Structured Data überprüft :

{
    "@context": "http://schema.org",
    "@type": "ItemList",
    "itemListOrder": "http://schema.org/ItemListOrderDescending",
    "itemListElement": [
        {
            "@type": "ListItem",
            "position": 1,
            "item": {
                "@type": "Product",
                "name": "My product",
                "url": "www.example.com",
                "offers": {
                    "@type": "Offer",
                    "availability": "http://schema.org/InStock",
                    "price": "100.00",
                    "priceCurrency": "AUD"
                }
            }
        }
    ]
}
2
Felix Eve

versuche dies

'@type': 'ListItem',
'position': 1,
'item':{
   '@type': 'Product',
... product props
}
1
malefique

Die Lösung besteht darin, Ihr product in die ListItem -Eigenschaft eines item zu packen. Der ListItem erhält die Eigenschaft position. Sobald Sie das tun, passiert es Googles SDTT.

HINWEIS: Es ist ungültig, ein Produkt offer auf mehr als 1 URL/URI zu haben.

Erstellen Sie eine Seite (eindeutige URL) für jedes Produktangebot, und geben Sie dort Ihre strukturierten Daten/schema.org-Produktangebotsdaten ein. ODER platzieren Sie alle Ihre Produktangebote auf einer einzigen Seite (URL/URI) - niemals beides. Andernfalls erhalten Sie den Fehler All values provided for url must point to the same page.

0
Ron Royston

Ich habe http://schema.org/itemListElement gefunden.

sie müssen die Position wie folgt angeben: <meta itemprop="position" content="1" />

Es gibt ein Beispiel am unteren Rand der Seite.

0
Barbu Barbu