我试图用结构化数据来标记一篇文章。对于这篇特别的文章,我发现使用JSON比使用Microdata要简单得多。在谷歌的结构化数据测试工具中,这个脚本运行良好,没有错误:
<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:
<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中的方法?
发布于 2017-07-24 10:55:06
您正在创建两个Article项。这些错误报告的是用Microdata创建的项目,而不是JSON创建的项目。
从理论上讲,解决方案是传达两个Article条目描述同一条,而不是两条不同的条款。这可以由为他们提供与ID相同的URI完成:在JSON中使用@id,在微数据中使用itemid (使用JSON和Microdata的示例)。
然而,目前谷歌的结构化数据测试工具似乎不支持混合语法 (除了奇怪的例外)。当使用相同的语法时,它用相同的ID“合并”所有项目。
似乎没有别的选择了。
如果您只关心Google文章丰富的结果,请注意,似乎不支持articleBody属性。因此,您可以省略微数据Article项,也可以等待谷歌是否能够显示页面的丰富结果(来自JSON项),尽管页面上还有另一个“不完整”的微数据项。
https://stackoverflow.com/questions/45265027
复制相似问题