重复架构/结构化数据标记?

时间:2018-01-30 23:59:01

标签: schema.org json-ld google-rich-snippets

这种结构会有问题吗?

<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的测试工具,它没有给我任何错误或警告。

1 个答案:

答案 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 /等。可以引用这些节点。