Javascript 如何使用JSON-LD标记面包屑列表中的最后一个非链接项
我正在使用结构化数据进行面包屑跟踪。我指的是以下文档: 我已经建立了一个面包屑清单。我还显示了引用当前页面的最后一项,但这不是链接,只是纯文本。这就是我的HTML标记的外观:Javascript 如何使用JSON-LD标记面包屑列表中的最后一个非链接项,javascript,html,json,schema.org,rich-snippets,Javascript,Html,Json,Schema.org,Rich Snippets,我正在使用结构化数据进行面包屑跟踪。我指的是以下文档: 我已经建立了一个面包屑清单。我还显示了引用当前页面的最后一项,但这不是链接,只是纯文本。这就是我的HTML标记的外观: <ol class="breadcrumb"> <li><a href="http://www.example.com/">Home</a></li> <li><a href="http://www.example.com/
<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>
我是否需要像添加其他两项一样添加最后一项,还是需要将其保留?这仅仅是为了有链接的项目吗?我不是SEO专家,也不知道你的目标是什么,但是阅读链接的api并没有指定链接(@id)在JSON-LD中是否是强制性的,但从官方文档来看,它们似乎可以省略,但可能会产生不必要的效果 6.14识别空白节点 有时,需要能够表达信息,而不必使用IRI唯一地标识节点。这种类型的节点称为空白节点。JSON-LD不要求使用@id标识所有节点。但是,某些图形拓扑可能要求标识符可序列化。例如,包含循环的图不能单独使用嵌入进行序列化,必须使用@id连接节点。在这些情况下,可以使用空白节点标识符,该标识符类似于使用下划线(3;)作为方案的IRIs。这允许在文档中本地引用节点,但无法从外部文档引用节点。空白节点标识符作用于使用它的文档。 在这种情况下,我会将最后一项留空,或者尝试添加它并忽略url 如果您想确保在google搜索页面上预览实际页面(如链接文档中),以便在面包屑列表中显示Cutten页面,我建议在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>
我的品牌
当然,您可以简单地为最后一项提供列表项
,并省略@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>
{
“@context”:”http://schema.org",
“@type”:“面包屑列表”,
“itemListElement”:[{
“@type”:“ListItem”,
"立场":一,,
“项目”:{
“@id”:”http://www.example.com/",
“姓名”:“家”
}
}, {
“@type”:“ListItem”,
"立场":二,,
“项目”:{
“@id”:”http://www.example.com/brands",
“名称”:“品牌”
}
}, {
“@type”:“ListItem”,
“立场”:3,
“项目”:{
“名称”:“我的品牌”
}
}]
}
根据Schema.org的说法,这是有效的JSON-LD
但是,我还是会添加最后/当前项目的URL。如果是RDFa或Microdata,我会使用链接元素作为最后一个项目的URL(因此人类访问者无法点击URL,但机器人拥有更多数据),但如果是JSON-LD,这个问题首先是不相关的,因为人类访问者通常不会与之交互
唯一可以想象的缺点是,如果HTML中的内容与JSON-LD中的内容不匹配(即,缺少最后一项的URL),消费者会感到困惑。但我认为这种风险很低,因为应该知道如何处理最后的面包屑项目。
就文档而言,Schema.org只是说“通常以当前页面结束”
作为消费者的一个例子,谷歌对他们的客户也这么说:
面包屑痕迹可能包括或省略其出现页面的面包屑
但是他们没有提到最后一个项目没有URL的情况。
{
“@context”:”http://schema.org",
“@type”:“面包屑列表”,
“itemListElement”:[{
“@type”:“ListItem”,
"立场":一,,
“项目”:{
“@id”:”http://www.example.com/",
“姓名”:“家”
}
}, {
“@type”:“ListItem”,
"立场":二,,
“项目”:{
“@id”:”http://www.example.com/brands",
“名称”:“品牌”
}
}, {
“@type”:“ListItem”,
“立场”:3,
“项目”:{
“@id”:”http://www.example.com/brands/mybrand",
“名称”:“我的品牌”
}
}]
}
将url添加到最后一个面包屑中不会出现在谷歌搜索结果中吗?@BrendanVogt:我无法想象它为什么会出现。谷歌对这两种变体(包括或不包括最后一个/当前项)都很满意,我猜他们处理这些情况的方式是一样的:在SERP中不显示它(因为这是多余的)。你能用microdata为你的链接元素建议提供一些标记吗?@BrendanVogt:你只需将最后一个a
元素替换为link
元素(以下是一个带有a的示例)。从2019年9月19日起,这不再有效。最后一个ListItem的节项不完整。
<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>