我正在尝试使用Microdata通过Schema.org定义来定义我的网站。我在ItemPage
上显示有关产品的信息。另外,我想在相关产品显示在当前产品范围之外时link similar products to the current product。
我尝试使用itemref
属性来实现这一点。但是,当我查看Structured Data Testing Tool上的页面时,它没有显示相关产品属于ItemPage
节点的一部分。
<body itemscope itemtype="http://schema.org/ItemPage">
<header itemprop="hasPart" itemscope itemtype="http://schema.org/WPHeader">
</header>
<article itemprop="mainEntity" itemscope itemtype="http://schema.org/Product" id="details_10">
<h2 itemprop="name">Product 10</h2>
</article>
<aside>
<article itemref="details_10" itemscope itemtype="http://schema.org/Product">
<h3 itemprop="name">Product 20</h3>
</article>
<article itemref="details_10" itemscope itemtype="http://schema.org/Product">
<h3 itemprop="name">Product 30</h3>
</article>
</aside>
<footer itemprop="hasPart" itemscope itemtype="http://schema.org/WPFooter">
</footer>
</body>
答案 0 :(得分:1)
它必须反过来使用:
itemref
属性必须位于表示要向其添加属性的项目的元素上。这将是您的主要产品。
您要添加的元素需要itemprop
属性(缺少该属性以及isSimilarTo
属性),并需要一个{{ {1}}属性。这些就是您所用的类似产品。
因此,这将给出:
id
此标记的问题在于,两个itemref
属性也被添加到<body itemscope itemtype="http://schema.org/ItemPage">
<article itemprop="mainEntity" itemscope itemtype="http://schema.org/Product" itemref="details_20 details_30"></article>
<aside>
<article id="details_20" itemprop="isSimilarTo" itemscope itemtype="http://schema.org/Product"></article>
<article id="details_30" itemprop="isSimilarTo" itemscope itemtype="http://schema.org/Product"></article>
</aside>
</body>
中(因为它们嵌套在其下),这是不正确的。为了避免这种情况,最好的解决方案不是在isSimilarTo
元素上指定ItemPage
,而是在ItemPage
或类似的元素上指定
body
(您也可以使用div
来避免将主<body>
<div itemscope itemtype="http://schema.org/ItemPage">
<article itemprop="mainEntity" itemscope itemtype="http://schema.org/Product" itemref="details_20 details_30"></article>
</div>
<aside>
<article id="details_20" itemprop="isSimilarTo" itemscope itemtype="http://schema.org/Product"></article>
<article id="details_30" itemprop="isSimilarTo" itemscope itemtype="http://schema.org/Product"></article>
</aside>
</body>
嵌套在itemref
下。这也可以在{{1 }}元素。)