我希望在网站上将 JSON-LD 用于架构。(架构意味着 schema.org 数据。)我知道如何编写数据,但我的问题是我的代码中是否有首选位置来插入这些数据?换句话说,JSON-LD 是否应该始终位于head
,body
等中?
3 回答
数据可以放在任何地方。来自谷歌的文档:
如下例所示,包含在
<script type="application/ld+json">
... 标记中的数据可以放置在显示该事件的页面的或区域中。</script>
<HEAD>
<BODY>
您还可以使用使用 AJAX 动态获取的数据:
可以识别在初始页面加载时运行的 Javascript 插入的 JSON-LD 标记。
更新(正如安东尼在评论中指出的那样)
最新的文档说:
[JSON-LD 是一种] JavaScript 表示法嵌入在页面头部或正文的标记中......当 JSON-LD 数据动态注入页面内容时,例如通过 JavaScript 代码或内容中的嵌入小部件,Google 可以读取 JSON-LD 数据管理系统。
从 Schema.org、JSON-LD 和可能提取的 RDF 的角度来看,这应该无关紧要。数据是相同的,无论它是从文档中的哪个位置提取的。
从 HTML5 的角度来看:
如果它是关于你的页面的数据(或者这个页面是关于什么的),你可以将script
元素放在head
, 作为head
元素
[…] 表示文档的元数据集合
但当然,用body
它代替它是没有错的。只是您不应该将head
数据用于与您的页面或它所代表的内容无关的数据。
如果您选择插入<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>