0

我正在尝试为我的产品页面创建 Google Rich Snippets。

我创建了一个产品使用

<div itemscope="" itemtype="http://schema.org/Product">
  ...
</div>

在这个产品中,我有一个报价,创建于

<div itemscope="" itemtype="http://schema.org/Product">
  <div itemprop="offers" itemscope="" itemtype="http://schema.org/Offer">
    ...
  </div>
</div>

我想将卖方属性(一个组织)添加到报价中,但是,我的 HTML 结构在产品下而不是报价下有卖方。

<div itemscope="" itemtype="http://schema.org/Product">
  <div itemprop="offers" itemscope="" itemtype="http://schema.org/Offer">
    ...
  </div>
  <div itemprop="seller" itemscope="" itemtype="http://schema.org/Organization">
    ...
  </div>
</div>

但是,这似乎并没有让 Google 结构化数据测试工具满意。

然后我尝试itemref在组织上使用并meta在报价中使用 -tag

<div itemscope="" itemtype="http://schema.org/Product">
  <div itemprop="offers" itemscope="" itemtype="http://schema.org/Offer">
    <meta itemprop="seller" itemref="provider">
    ...
  </div>
  <div id="provider" itemscope="" itemtype="http://schema.org/Organization">
    ...
  </div>
</div>

但它似乎仍然不承认卖方是组织。

我究竟做错了什么?

4

1 回答 1

1

您没有itemref正确使用:

  • itemref必须在带有 的元素上指定该属性itemscope
  • 它必须引用一个带有itemprop.

因此,您的示例必须如下所示:

<div itemscope itemtype="http://schema.org/Product">
  <div itemprop="offers" itemscope itemtype="http://schema.org/Offer" itemref="provider">
  </div>
  <div id="provider" itemprop="seller" itemscope itemtype="http://schema.org/Organization">
  </div>
</div>

但这不起作用,因为这样一来,seller属性将被添加到这两个项目中,Product并且Offer。这是无效的,因为Product不能拥有该seller属性。

因此,您要么必须更改嵌套,要么不要Product在容器上使用div

但是,还有一个丑陋的解决方法:添加一个虚拟元素itemscope

<div itemscope itemtype="http://schema.org/Product">
  <div itemprop="offers" itemscope itemtype="http://schema.org/Offer" itemref="provider">
  </div>
  <div itemscope>
    <div id="provider" itemprop="seller" itemscope itemtype="http://schema.org/Organization">
    </div>
  </div>
</div>
于 2014-12-12T12:46:40.543 回答