Допустим, у нас есть электронная коммерция, такая как Adidas. У нас есть базовая структура JSON-LD для WebSsite:
{
"@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': '[email protected]',
'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 элементами, которые вы используете.
Если у вас есть эти три объекта на странице, вы должен передать, как они связаны. Что вы, вероятно, хотите передать: существует веб-страница, которая является частью этого веб-сайта, которая публикуется этой организацией, и на которой есть этот список хлебных крошек.
Так что вам не хватает сущности, представляющей веб-страницу (→ WebPage), и свойств для соединения всех ваших сущностей (→ 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"
}
}
Дайте каждой соответствующей организации @id, поэтому вы можете Справка этих сущностей на той же странице (в том же элементе script или в других) или даже на внешних страницах.
Я использую его здесь, чтобы передать, что один и тот же Organization является publisher для WebPage, а также 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"
}
}
@ HéctorLeón: Пока вы мог добавляете данные в структуру BreadcrumbList, я бы этого не делал (потребители могут пропустить весь элемент, если их не интересуют хлебные крошки). - Существуют различные способы подключения Store - это зависит от вашего конкретного варианта использования (чтобы ответить на этот вопрос, необходимы дополнительные сведения; может потребоваться новый вопрос; если только спросить, какое свойство использовать, возможно, лучше всего в Вебмастерам) . - Кстати: если это ShoeStore, вам не нужно указывать Store дополнительно, потому что ShoeStore имеет Store в качестве родительского типа.
И еще один вопрос, почему перед хэштегом стоит косая черта /? в "@id": "/#ID-HERE"
О, спасибо, поэтому я не заставляю указывать родителя, они просто наследуют его родительские свойства. Еще раз спасибо, я присоединюсь к этому сообществу и опубликую новый вопрос :)
@ HéctorLeón: Цель состоит в том, чтобы указать URI, который представляет реальную вещь, а не только страницу, где это описано; # помогает устранить неоднозначность (подробности). Итак, для веб-сайта по адресу https://example.com/, указав где-нибудь "@id": "/#this-org", результирующий URI будет: https://example.com/#this-org. Каждый раз, когда вы упоминаете эту организацию в своих структурированных данных, вы должны указывать этот URI. Теперь это просто пример - вы, конечно, можете использовать любой URI, который хотите (/organization#this, /foobar552#organization и т. д.).
Хорошо, это круто. большое спасибо @unor. Так сложно найти подробную информацию об этом. Итак, следуя вашему последнему фрагменту, как мы могли бы добавить 'Store' @type, который я видел, передавая arr of types
"@type": ["Website", "Store"]. Это хороший способ сделать это? Или мы можем добавить «Магазин» в качестве нового ключа под"Breadcrumb". А Adidas Store также является «Магазином обуви» ..."@type": ["Website", "Store", "ShoeStore"]? Как видите, меня смущает эта вложенность. Веб-страница также имеет ключевую специализацию (одна из предметных областей, к которой относится содержимое этой веб-страницы)"specialty" : { @type: "Store" }