如何使用JSON-LD标记面包屑列表中的最后一个非链接项

9
我在使用结构化数据来制作面包屑导航。我参考了这份文档:https://developers.google.com/structured-data/breadcrumbs
我已经建立了一个面包屑列表。同时,我也展示了最后一项,它指向当前页面,但这不是一个链接,只是纯文本。我的HTML标记如下:
<ol class="breadcrumb">
     <li><a href="http://www.example.com/">Home</a></li>
     <li><a href="http://www.example.com/brands">Brands</a></li>
     <li class="active">My Brand</li>
</ol>

我选择使用JSON-LD来标记我的面包屑导航。我不确定该如何标记面包屑列表中的最后一个项目,因为它不是链接。我应该省略它吗?这是我当前的代码:

<script type="application/ld+json">
{
     "@context": "http://schema.org",
     "@type": "BreadcrumbList",
     "itemListElement": [{
          "@type": "ListItem",
          "position": 1,
          "item": {
               "@id": "http://www.example.com/",
               "name": "Home"
          }
     }, {
          "@type": "ListItem",
          "position": 2,
          "item": {
               "@id": "http://www.example.com/brands",
               "name": "Brands"
          }
     }]
}
</script>

我需要增加最后一项,就像我对另外两项所做的那样,还是需要将其保留?这只针对具有链接的项目吗?

3个回答

13

当然,您可以简单地为最后一项提供 ListItem 并省略 @id

<script type="application/ld+json">
{
     "@context": "http://schema.org",
     "@type": "BreadcrumbList",
     "itemListElement": [{
          "@type": "ListItem",
          "position": 1,
          "item": {
               "@id": "http://www.example.com/",
               "name": "Home"
          }
     }, {
          "@type": "ListItem",
          "position": 2,
          "item": {
               "@id": "http://www.example.com/brands",
               "name": "Brands"
          }
     }, {
          "@type": "ListItem",
          "position": 3,
          "item": {
               "name": "My Brand"
          }
     }]
}
</script>

这是有效的JSON-LD,并且符合Schema.org的规范。

不过,我会在任何情况下都添加最后/当前项目的URL。对于RDFa或Microdata,我会使用link元素来表示最后一个项目的URL(这样URL对于人类访问者来说不可点击,但机器人可以获得更多数据),但是对于JSON-LD而言,这个问题本来就不相关,因为人类访问者通常不会与其交互。

唯一可以想象的缺点可能是,如果HTML中的内容与JSON-LD中的内容不匹配(即,缺少最后一个项目的URL),那么消费者可能会感到困惑。但我认为这种风险相当低,因为应该知道有不同的处理方式来处理最后的面包屑项目。


至于文档,Schema.org只说BreadcrumbList "通常以当前页面结尾"。

作为用户的示例,Google针对他们的面包屑特性也是这么说的:

面包屑路径可以包含或省略它所在页面的面包屑。

但他们没有提及包含最后一个项目但其URL缺失的情况。


将URL添加到最后一个面包屑中,它不会出现在Google搜索结果的路径中吗? - Brendan Vogt
@BrendanVogt:我无法想象为什么它会出现。Google对两种变体(包括或不包括最后/当前项目)都很好,我的猜测是他们处理这些情况的方式相同:不在他们的SERP中显示它(因为它是多余的)。 - unor
请问您能否使用微数据为您的链接元素建议提供一些标记? - Brendan Vogt
@BrendanVogt:你只需要用一个link元素替换最后一个a元素(这里有一个带有bodyitemproplink元素的例子)。 - unor
2
从2019年9月19日起,这不再有效。最后一个ListItem的_item_部分不完整。https://twitter.com/googlewmc/status/1174693878835875840 - hans2103
显示剩余2条评论

0

我不是SEO专家,也不知道您的目标是什么,但是阅读链接的API并没有指定在JSON-LD中链接(@id)是否是强制性的,但从官方文档 JSON-LD documentation中看来,它们可以省略,但可能会产生不良影响。

6.14 识别空节点

有时候,需要能够表达信息,而无法使用IRI唯一地标识节点。这种类型的节点称为空节点。JSON-LD不要求所有节点都使用@id标识。但是,某些图形拓扑结构可能需要标识符可序列化。包含循环的图形,例如,不能仅使用嵌入进行序列化,必须使用@id连接节点。在这些情况下,可以使用空白节点标识符,它们看起来像是使用下划线(_)作为方案的IRI。这允许在文档内部引用节点,但无法从外部文档引用该节点。空白节点标识符范围限于其使用的文档。

在这种特殊情况下,我将留空最后一个项目或尝试添加它并省略URL。

如果您想确保在Google搜索页面上预览实际页面(如链接文档中所示),以便在面包屑列表中出现当前页面,我建议在ol中添加一个隐藏元素,其中包含指向当前页面的链接,并将其添加到带有链接的面包屑JSON-LD列表中。

<ol class="breadcrumb">
 <li><a href="http://www.example.com/">Home</a></li>
 <li><a href="http://www.example.com/brands">Brands</a></li>
 <li class="hidden"><a href="http://www.example.com/My_Brand">My Brand</a></li>
 <li class="active">My Brand</li>
</ol>

0

<script type="application/ld+json">
{
     "@context": "http://schema.org",
     "@type": "BreadcrumbList",
     "itemListElement": [{
          "@type": "ListItem",
          "position": 1,
          "item": {
               "@id": "http://www.example.com/",
               "name": "Home"
          }
     }, {
          "@type": "ListItem",
          "position": 2,
          "item": {
               "@id": "http://www.example.com/brands",
               "name": "Brands"
          }
     }, {
          "@type": "ListItem",
          "position": 3,
          "item": {
           "@id": "http://www.example.com/brands/mybrand",
               "name": "My Brand"
          }
     }]
}
</script>

这里提供了正确的Jason-LD代码。

尽管Unor表示他的代码已经验证,但请注意,在https://search.google.com/structured-data/testing-tool中,如果没有最后一个item.id,他的代码将无法通过验证。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接