我的电子商务产品页面上有 Micro Data 和 JSON-LD,描述相同的事物(在我的例子中是产品)。由于超出此问题范围的原因,我无法删除这两种格式中的任何一种。我想知道:
这对 Google 来说是个问题吗?结构化数据测试工具确实显示两项(产品)而不是一项。
如果两种格式之间的一个属性(例如产品名称)略有不同,那么这两种格式中的任何一种(例如 JSON-LD)是否会优先?
最佳答案
问题在于消费者会认为所描述的事物不同(或者更准确地说:消费者不知道这些事物是否相同)。
有一种方法可以防止这种情况发生1:give each thing a URI ,如果内容相同,则使用相同的 URI。
这可以通过 JSON-LD 中的 @id
和 Microdata 中的 itemid
来完成。
所以一个简单的情况可能是:
<!-- markup on the product page,
so the fragment "#this" results in an absolute URI like
"http://example.com/products/foo#this" -->
<!-- JSON-LD -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Product",
"@id": "#this",
"name": "Foo"
}
</script>
<!-- Microdata -->
<article itemscope itemtype="http://schema.org/Product" itemid="#this">
<h1 itemprop="name">Foo</h1>
</article>
如果像 name
这样的属性具有不同的值,消费者处理此问题的明显方法是为该事物指定多个名称。对于消费者只需要一个名称的功能(例如,在丰富的结果中),没有定义将使用哪个 name
值。如果消费者是搜索引擎,它可能会使用其已有的专有算法来处理此类情况。
1 当然,目前尚不清楚所有不同的消费者是否/如何支持它。但这是正确的方法,也是唯一明确的方法。隐式方式包括希望消费者理解通常(但不一定)唯一属性的相同值(例如,url
、email
、productID
、等)意味着事物是相同的。但这种隐式方式当然可以与显式方式一起使用。
关于schema.org - JSON-LD 和 Microdata 在同一页面上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41034582/