106

我希望在网站上将 JSON-LD 用于架构。(架构意味着 schema.org 数据。)我知道如何编写数据,但我的问题是我的代码中是否有首选位置来插入这些数据?换句话说,JSON-LD 是否应该始终位于head,body等中?

4

3 回答 3

104

数据可以放在任何地方。来自谷歌的文档

如下例所示,包含在<script type="application/ld+json">... 标记中的数据可以放置显示该事件的页面的区域中。</script><HEAD><BODY>

您还可以使用使用 AJAX 动态获取的数据

可以识别在初始页面加载时运行的 Javascript 插入的 JSON-LD 标记。

更新(正如安东尼在评论中指出的那样)

最新的文档说:

[JSON-LD 是一种] JavaScript 表示法嵌入在页面头部或正文的标记中......当 JSON-LD 数据动态注入页面内容时,例如通过 JavaScript 代码或内容中的嵌入小部件,Google 可以读取 JSON-LD 数据管理系统。

于 2015-06-20T16:54:59.873 回答
79

从 Schema.org、JSON-LD 和可能提取的 RDF 的角度来看,这应该无关紧要。数据是相同的,无论它是从文档中的哪个位置提取的。

从 HTML5 的角度来看:

如果它是关于你的页面的数据(或者这个页面是关于什么的),你可以将script元素放在head, 作为head元素

[…] 表示文档的元数据集合

但当然,用body它代替它是没有错的。只是您不应该将head数据用于与您的页面或它所代表的内容无关的数据。

于 2015-02-24T04:52:30.370 回答
-3

如果您选择插入<body>,您必须这样做:

<p class="companyName" vocab="http://schema.org/" resource="#manu" typeof="Organization">
   <span property="name">ShopTech Media</span>
   <img property="logo" src="https://yoursite.com/logo.png" />
   <a property="url" href="http://www.yoursite.com">Home page</a>
</p>
<p typeof="contactPoint">
  <span property="contactType">Customer Service:</span>
<span property="telephone">+45-xxxxxxx</span>
</p>

下面是在标签中插入结构化数据的脚本<head>代码

<script type="application/ld+json"> 
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "url": "http://www.shoptech.media",
  "logo": "https://shoptech.media/wp-content/uploads/2019/08/cropped-logo-sm.png",
  "contactPoint": [{
    "@type": "ContactPoint",
    "telephone": "+45-65711114",
    "contactType": "customer service"
  }]
}
</script>

检查通用结构化数据指南中的文档

于 2019-08-14T15:15:14.127 回答