首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结构化数据:将JSON与Microdata混合会导致错误

结构化数据:将JSON与Microdata混合会导致错误
EN

Stack Overflow用户
提问于 2017-07-23 12:22:05
回答 1查看 646关注 0票数 3

我试图用结构化数据来标记一篇文章。对于这篇特别的文章,我发现使用JSON比使用Microdata要简单得多。在谷歌的结构化数据测试工具中,这个脚本运行良好,没有错误:

代码语言:javascript
复制
<script type="application/ld+json">
    {
      "@context": "http://schema.org",
      "@type": "Article",
      "mainEntityOfPage": {
         "@type": "WebPage",
         "@id": "https://my_website/my_article.php"
      },
      "author": "My name",
      "name": "My article",
      "headline": "My article",
      "datePublished": "2017-06-10",
      "dateModified": "2017-07-23",
      "image":{"@type":"ImageObject","url":"https://my_website/images/my_logo.png","height":768, "width":782},
      "publisher" : {
          "@type": "Organization", 
          "name": "My site name",
          "logo":{"@type":"ImageObject","url":"https://my_website/images/my_banner.png","height":60, "width":600}
        }
    }

但是,文章正文很长,所以我不想通过articleBody将其放在脚本中。相反,我使用了Microdata:

代码语言:javascript
复制
<div itemscope itemtype="http://schema.org/Article" class="col-md-8">
     <div itemprop="articleBody" class="card">
          <!-- Rest of my HTML -->

一旦我这样做,测试工具就会为我的JSON中的每一项提供一个错误,表示这些字段是必需的。

有没有一种不将3,000行内容复制到JSON脚本articleBody中的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-24 10:55:06

您正在创建两个Article项。这些错误报告的是用Microdata创建的项目,而不是JSON创建的项目。

从理论上讲,解决方案是传达两个Article条目描述同一条,而不是两条不同的条款。这可以由为他们提供与ID相同的URI完成:在JSON中使用@id,在微数据中使用itemid (使用JSON和Microdata的示例)。

然而,目前谷歌的结构化数据测试工具似乎不支持混合语法 (除了奇怪的例外)。当使用相同的语法时,它用相同的ID“合并”所有项目。

似乎没有别的选择了。

如果您只关心Google文章丰富的结果,请注意,似乎不支持articleBody属性。因此,您可以省略微数据Article项,也可以等待谷歌是否能够显示页面的丰富结果(来自JSON项),尽管页面上还有另一个“不完整”的微数据项。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45265027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档