JSON-LD 和微数据在同一页面上?
Posted
技术标签:
【中文标题】JSON-LD 和微数据在同一页面上?【英文标题】:JSON-LD and Microdata on the same page? 【发布时间】:2017-04-23 09:46:16 【问题描述】:我的电子商务产品页面上有 Micro Data 和 JSON-LD,描述了相同的东西(在我的例子中是产品)。由于超出此问题范围的原因,我无法删除这两种格式中的任何一种。我想知道:
这对 Google 来说是个问题吗?结构化数据测试工具会显示两个项目(产品)而不是一个。
如果一个属性,比如产品的名称,在两种格式之间略有不同,这两种格式中的任何一种会优先考虑吗?例如,JSON-LD?
【问题讨论】:
这能回答你的问题吗? Google does not correctly merge microdata and json+ld in the same page using same URI id 【参考方案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
值。如果消费者是搜索引擎,它可能会使用其现有的专有算法来处理此类情况。
¹ 当然,目前尚不清楚所有不同的消费者是否/如何支持它。但这是执行此操作的正确方法,也是执行此操作的唯一明确方法。隐含的方式包括希望消费者理解通常(但不一定)独特属性(例如,url
、email
、productID
等)的相同值意味着事情是相同的。但是这种隐式方式当然可以和显式方式一起使用。
【讨论】:
“有一种方法可以防止这种情况¹:给每个事物一个 URI,如果事物相同,则使用相同的 URI。”不适用于 Google,请参阅 ***.com/a/59771262/565110 @DavidRiccitelli 请提供任何证据或参考来证明您声称与 Google 不兼容? 看到这个***.com/questions/33756091/… 还尝试使用 SDTT 中相同的 @id/item 复制和粘贴 JSON-LD 和微数据:它们不会合并。干杯以上是关于JSON-LD 和微数据在同一页面上?的主要内容,如果未能解决你的问题,请参考以下文章
通过使用结构化数据 JSON-LD,我为网站带来了更多的流量