web-dev-qa-db-ja.com

商品リストアイテムのあるItemListには「位置」プロパティが必要ですか?

問題があります:Googleの構造化データテストツールでエラーが発生します:

タグpositionは存在しません。必須です。

Tag position doesn't exist

マークアップに追加します。私がこのエラーを受け取るより:

Positionプロパティは、タイプProductのオブジェクトには無効です

Position property is not valid for an object of type Product

これが私のマークアップです:

<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> 
21
murrometz

これはコードのエラーではありません。これは、このプロパティを指定しない限り、Googleが特定のリッチスニペット(または同様の機能)を表示しないことを意味します。

ただし、 position propertyProduct type に対して定義されていないため、意味がありません。

これはGoogleの新しい構造化データ機能のようですが、404ページにリンクしているため、まだドキュメント化されていません: List Page Carousels 。多分それは進行中の仕事であり、彼らはまだテストツールでチェックを公開することを意味していませんでした。

したがって、今のところは無視します。

7
unor

これは、明示的なドキュメントではないことが原因である、Google側の実装エラーだと思います。

https://schema.org/itemListElement は明確に述べています

既存のエンティティは、データ内の既存のものの単純で順序付けられていないリストに最適です。 ListItemは、そのリストの要素に関する追加のコンテキストを提供する場合、または同じアイテムが別のリストの別の場所にある可能性がある場合に、順序付きリストで使用されます。

注:マークアップ内の要素の順序は、順序または要素を示すのに十分ではありません。 そのような場合は、「position」プロパティでListItemを使用してください。

同時に言うこれらのタイプの1つであることが期待される値は次のとおりです。

  • ListItem
  • テキスト
  • もの

=>これはimplicitlyを意味し、position要素はソートされたリストにのみ必要になることを意味します。 Thing要素がListItem要素内に含まれていることを要求し、itemproppositionを提供します。

また、implicitlyは、ItemListElementTextまたはThing、リストはUnorderedと見なされます。

これが、ドキュメントが意味を持つ唯一の方法です。暗黙の接続が失われたと思います。

したがって、適切なアクションは、Structured Data Testing Toolのバグレポートを提出し、今のところ警告または回避策として、ListItem要素内にProductをネストします。

4
Richard Heider

私のテストから、malefiqueは適切なソリューションです。

このコードは、 構造化データテストツール を使用して完全に検証します。

{
    "@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"
                }
            }
        }
    ]
}
3
Felix Eve

これを試して

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

私は http://schema.org/itemListElement を見つけました

あなたはそのように位置を指定する必要があります<meta itemprop="position" content="1" />

ページの下部に例があります。

1
Barbu Barbu

修正は、productListItemitemプロパティに詰め込むことです。 ListItempositionプロパティを取得します。これを行うと、GoogleのSDTTに合格します。

注:複数のURL/URIに製品offerを含めることは無効です。

各製品オファーのページ(一意のURL)を作成し、そこに構造化データ/ schema.org製品オファーデータを配置します。または、すべての製品オファーを1つのページ(URL/URI)に配置します-両方を配置することはできません。そうしないと、エラーAll values provided for url must point to the same page.

0
Ronnie Royston