每页有许多 JSON-LD 脚本元素,还是一个带有嵌套的脚本元素?
Many JSON-LD script elements per page or a single one with nesting?
假设我们有像阿迪达斯这样的电子商务。我们有 WebSsite
的基本 JSON-LD 结构:
{
"@context": "http://schema.org",
"@type": "WebSite",
"url": "https://adidas.com/us",
"potentialAction": {
"@type": "SearchAction",
"target": "https://adidas.com/us/search?q={search_term_string}",
"query-input": "required name=search_term_string"
}
}
我们有 Organization
:
{
'@context': 'http://schema.org',
'@type': 'Organization',
'name': 'Adidas',
'description': 'Sport Shop',
'email': 'adidas@adidas.us',
'url': 'http://www.adidas.us',
'logo': 'http://www.adidas.us/logo.svg'
}
网站也是Store
:
"@context":"http://schema.org",
"@type":"Store",
"url": 'http://www.adidas.us',
"description": "Adidas Shop !",
"name": "Adidas"
}
我们也有经典BreadcrumbList
:
"@context":"http://schema.org",
"@type":"BreadcrumbList",
"itemListElement":
[
{
"@type":"ListItem",
"position":1,
"item":{
"@type":"Thing",
"@id":"https://www.adidas.us",
"name":"Adidas"
}
},
{
"@type":"ListItem",
"position":2,
"item":{
"@type":"Thing",
"@id":"https://www.adidas.us/shoes",
"name":"Adidas shoes"
}
},
{
"@type":"ListItem",
"position":3,
"item":{
"@type":"Thing",
"@id":"https://www.adidas.us/shoes/Featured",
"name":"Adidas featured shoes"
}
}
]
}
这3个JSON-LD很常见(当然或多或少详细),有时我在网页中发现3 script
个元素有这些JSON-LD,有时只有 1 个,有时只有 2 个。
我们应该尝试将它们嵌套成一个 script
(如果是,怎么做!?),还是将它们分开更好?
重要的是您将实体与合适的属性连接起来, script
您使用的元素。
如果页面上有这三个实体,您 should convey 了解它们之间的关系。您可能想要传达的信息:有一个网页是该网站的一部分,由该组织发布,并且有一个面包屑列表。
所以您缺少的是表示网页的实体 (→ WebPage
) and properties to connect all your entities (→ publisher
, breadcrumb
, isPartOf
)。
您指定这些实体的 script
个元素由您决定:
- 一个
script
,嵌套所有实体。
- 一个
script
,具有多个顶级对象(使用 @graph
和 @id
)。
- 每个实体一个
script
(使用 @id
)。
- 以上的组合。
第一个最简单:
{
"@context": "http://schema.org",
"@type": "WebPage",
"isPartOf": {
"@type": "WebSite"
},
"publisher": {
"@type": "Organization"
},
"breadcrumb": {
"@type": "BreadcrumbList"
}
}
Give each relevant entity an @id
, so you can reference 这些实体在同一页面上(在同一 script
元素或其他元素中),甚至在外部页面上。
我在这里用它来表示相同的 Organization
是 WebPage
的 publisher
以及 WebSite
:
{
"@context": "http://schema.org",
"@type": "WebPage",
"@id": "",
"isPartOf": {
"@type": "WebSite",
"@id": "/#this-site",
"publisher": {"@id": "/#this-org"}
},
"publisher": {
"@type": "Organization",
"@id": "/#this-org"
},
"breadcrumb": {
"@type": "BreadcrumbList"
}
}
假设我们有像阿迪达斯这样的电子商务。我们有 WebSsite
的基本 JSON-LD 结构:
{
"@context": "http://schema.org",
"@type": "WebSite",
"url": "https://adidas.com/us",
"potentialAction": {
"@type": "SearchAction",
"target": "https://adidas.com/us/search?q={search_term_string}",
"query-input": "required name=search_term_string"
}
}
我们有 Organization
:
{
'@context': 'http://schema.org',
'@type': 'Organization',
'name': 'Adidas',
'description': 'Sport Shop',
'email': 'adidas@adidas.us',
'url': 'http://www.adidas.us',
'logo': 'http://www.adidas.us/logo.svg'
}
网站也是Store
:
"@context":"http://schema.org",
"@type":"Store",
"url": 'http://www.adidas.us',
"description": "Adidas Shop !",
"name": "Adidas"
}
我们也有经典BreadcrumbList
:
"@context":"http://schema.org",
"@type":"BreadcrumbList",
"itemListElement":
[
{
"@type":"ListItem",
"position":1,
"item":{
"@type":"Thing",
"@id":"https://www.adidas.us",
"name":"Adidas"
}
},
{
"@type":"ListItem",
"position":2,
"item":{
"@type":"Thing",
"@id":"https://www.adidas.us/shoes",
"name":"Adidas shoes"
}
},
{
"@type":"ListItem",
"position":3,
"item":{
"@type":"Thing",
"@id":"https://www.adidas.us/shoes/Featured",
"name":"Adidas featured shoes"
}
}
]
}
这3个JSON-LD很常见(当然或多或少详细),有时我在网页中发现3 script
个元素有这些JSON-LD,有时只有 1 个,有时只有 2 个。
我们应该尝试将它们嵌套成一个 script
(如果是,怎么做!?),还是将它们分开更好?
重要的是您将实体与合适的属性连接起来,script
您使用的元素。
如果页面上有这三个实体,您 should convey 了解它们之间的关系。您可能想要传达的信息:有一个网页是该网站的一部分,由该组织发布,并且有一个面包屑列表。
所以您缺少的是表示网页的实体 (→ WebPage
) and properties to connect all your entities (→ publisher
, breadcrumb
, isPartOf
)。
您指定这些实体的 script
个元素由您决定:
- 一个
script
,嵌套所有实体。 - 一个
script
,具有多个顶级对象(使用@graph
和@id
)。 - 每个实体一个
script
(使用@id
)。 - 以上的组合。
第一个最简单:
{
"@context": "http://schema.org",
"@type": "WebPage",
"isPartOf": {
"@type": "WebSite"
},
"publisher": {
"@type": "Organization"
},
"breadcrumb": {
"@type": "BreadcrumbList"
}
}
Give each relevant entity an @id
, so you can reference 这些实体在同一页面上(在同一 script
元素或其他元素中),甚至在外部页面上。
我在这里用它来表示相同的 Organization
是 WebPage
的 publisher
以及 WebSite
:
{
"@context": "http://schema.org",
"@type": "WebPage",
"@id": "",
"isPartOf": {
"@type": "WebSite",
"@id": "/#this-site",
"publisher": {"@id": "/#this-org"}
},
"publisher": {
"@type": "Organization",
"@id": "/#this-org"
},
"breadcrumb": {
"@type": "BreadcrumbList"
}
}