带有产品列表项的ItemList需要“position”属性?

时间:2015-09-14 09:03:40

标签: schema.org microdata google-rich-snippets

我遇到了问题: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> 

6 个答案:

答案 0 :(得分:4)

这不是您的代码的错误。这只是意味着除非您提供此属性,否则Google不会显示某个Rich Snippet(或类似功能)。

但是,position property没有定义Product type,所以这没有任何意义。

这似乎是来自Google的新结构化数据功能,尚未记录,因为它链接到404页面:List Page Carousels。也许这是一项正在进行的工作,他们并不打算在他们的测试工具中发布支票。

所以我暂时忽略了这一点。

答案 1 :(得分:4)

我想这是由非显式文档导致的Google方面的实施错误:

https://schema.org/itemListElement明确说明

  

现有实体最适合您数据中现有内容的简单无序列表。 ListItem与有序列表一起使用时,如果要提供有关该列表中元素的其他上下文,或者同一项可能位于不同列表中的不同位置。

     

注意:标记中元素的顺序不足以指示订单或元素。 使用带有&#39;位置的ListItem&#39;在这种情况下的财产。

同时说值应该是这些类型中的一种

  • ListItem
  • 文字

=&GT;这意味着隐式 position 元素只能用于排序列表,而排序列表又要求Thing元素包含在 ListItem 中element,提供itemprop 位置

这也意味着隐式如果 ItemListElement Text Thing ,则应该将列表视为< EM>无序

这是文档有意义的唯一方法。我认为错过了隐式连接。

所以我想相应的操作是为结构化数据测试工具提交错误报告,并接受警告,现在嵌套产品< / em>在 ListItem 元素中作为解决方法。

答案 2 :(得分:2)

从我的测试中,malefique是正确的解决方案。

此代码使用Structured Data testing tool完全验证:

{
    "@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 :(得分:1)

试试这个

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

答案 4 :(得分:1)

我找到了http://schema.org/itemListElement

您必须像<meta itemprop="position" content="1" />

那样指定位置

页面底部有一个例子。

答案 5 :(得分:0)

The fix is to stuff your product into a ListItem's item property. The ListItem gets the position property. Once you do that, it passes Google's SDTT.

NOTE: It is invalid to have a product offer on more than 1 URL/URI.

Build out a page (unique URL) for each product offer and that's where you put your structured data / schema.org product offer data; OR, put all your product offers on a single page (URL/URI) - never both. Otherwise, you'll get error All values provided for url must point to the same page.