Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用JSON-LD标记面包屑列表中的最后一个非链接项_Javascript_Html_Json_Schema.org_Rich Snippets - Fatal编程技术网

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

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/

我正在使用结构化数据进行面包屑跟踪。我指的是以下文档:

我已经建立了一个面包屑清单。我还显示了引用当前页面的最后一项,但这不是链接,只是纯文本。这就是我的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>

我是否需要像添加其他两项一样添加最后一项,还是需要将其保留?这仅仅是为了有链接的项目吗?

我不是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>