这种结构会有问题吗?
<script type="application/ld+json">
{
"@context":"http://schema.org",
"@type":"WebPage",
"name":"Postcards",
"url":"https://local.mysite.com/postcards.html",
"breadcrumb":{
"@type":"BreadcrumbList",
"itemListElement":[
{
"@type":"ListItem",
"position":1,
"item":{
"@id":"https://local.mysite.com",
"name":"My Site"
}
},
{
"@type":"ListItem",
"position":2,
"item":{
"@id":"https://local.mysite.com/postcards.html",
"name":"Postcards"
}
}
]
},
"mainEntity":{
"@type":"WebPageElement",
"offers":{
"@type":"Offer",
"itemOffered":[
{
"@type":"Product",
"name":"Christmas Postcards",
"url":"https://local.mysite.com/christmas-postcards.html"
},
{
"@type":"Product",
"name":"Getaway Postcards",
"url":"https://local.mysite.com/getaway-postcards.html"
}
]
}
}
}</script>
<script type="application/ld+json">
{
"@context":"http://schema.org",
"@type":"WebPage",
"name":"Postcards",
"url":"https://local.mysite.com/postcards.html",
"breadcrumb":{
"@type":"BreadcrumbList",
"itemListElement":[
{
"@type":"ListItem",
"position":1,
"item":{
"@id":"https://local.mysite.com",
"name":"My Site"
}
},
{
"@type":"ListItem",
"position":2,
"item":{
"@id":"https://local.mysite.com/postcards.html",
"name":"Postcards"
}
}
]
},
"mainEntity":{
"@type":"WebPageElement",
"offers":{
"@type":"Offer",
"itemOffered":[
{
"@type":"Product",
"name":"Mini Postcards",
"url":"https://local.mysite.com/mini-postcards.html"
},
{
"@type":"Product",
"name":"Summer Postcards",
"url":"https://local.mysite.com/summer-postcards.html"
}
]
}
}
}</script>
原因可能是&#34;重复&#34;对于单个类别页面,这样的标记是该页面可以使用多个产品模板。
在当前实现中,标记是在产品模板中动态构建的。例如,如果单个类别页面有两个产品模板,则标记将重建两次,但包含不同的WebPageElement
。
这会产生不好的结果吗?我查看了Google的测试工具,它没有给我任何错误或警告。
答案 0 :(得分:1)
如果您有多个节点代表页面上的同一实体,最佳做法是为这些节点提供相同的URI as identifier。
使用JSON-LD,您可以使用@id
提供标识符。
所以
WebPage
项都可以获得"@id": ""
(对于当前网址;最好在此处指定您的规范网址),BreadcrumbList
项都可以获得"@id": "#breadcrumbs"
,ListItem
- 1件商品均可获得"@id": "#breadcrumbs-1"
和ListItem
- 2件商品均可获得"@id": "#breadcrumbs-2"
。这样,谷歌的SDTT只会显示一次这些项目,因为它现在知道它们是同一个实体。
@id
还允许您引用节点而不是嵌入它们(从而复制它们的数据)。 See an example.
在您的情况下,这样做的好处是您不必首先复制WebPage
/ BreadcrumbList
/ ListItem
个节点。您可以指定一次这些节点,然后每个产品模板只会输出Offer
/ Product
个节点。这些节点可以包括对WebPage
/等的(反向)引用。 (可能更容易实现),或WebPage
/等。可以引用这些节点。