Как разметить последний не связанный элемент в списке хлебных крошек с помощью JSON-LD

Я использую структурированные данные для своего следа хлебных крошек. Я имею в виду эту документацию:

https://developers.google.com/structured-data/breadcrumbs

Я составил список хлебных крошек. Я также показываю последний элемент, который ссылается на текущую страницу, но это не ссылка, а просто текст. Вот как выглядит моя HTML-разметка:

<ol class="breadcrumb">
     <li><a href="http://www.example.com/">Home</a></li>
     <li><a href="http://www.example.com/brands">Brands</a></li>
     <li class="active">My Brand</li>
</ol>

Я решил использовать JSON-LD для разметки моего следа хлебных крошек. Я не знаю, как разметить последний элемент в моем списке хлебных крошек, если он не является ссылкой? Я должен оставить это? Это то, что у меня есть на данный момент:

<script type="application/ld+json">
{
     "@context": "http://schema.org",
     "@type": "BreadcrumbList",
     "itemListElement": [{
          "@type": "ListItem",
          "position": 1,
          "item": {
               "@id": "http://www.example.com/",
               "name": "Home"
          }
     }, {
          "@type": "ListItem",
          "position": 2,
          "item": {
               "@id": "http://www.example.com/brands",
               "name": "Brands"
          }
     }]
}
</script>

Мне нужно добавить последний элемент, как я сделал с двумя другими элементами, или мне нужно оставить его? Это только для элементов, которые имеют ссылки на него?


person Brendan Vogt    schedule 13.11.2015    source источник


Ответы (3)


Конечно, вы можете просто указать ListItem для последнего элемента и опустить @id:

<script type="application/ld+json">
{
     "@context": "http://schema.org",
     "@type": "BreadcrumbList",
     "itemListElement": [{
          "@type": "ListItem",
          "position": 1,
          "item": {
               "@id": "http://www.example.com/",
               "name": "Home"
          }
     }, {
          "@type": "ListItem",
          "position": 2,
          "item": {
               "@id": "http://www.example.com/brands",
               "name": "Brands"
          }
     }, {
          "@type": "ListItem",
          "position": 3,
          "item": {
               "name": "My Brand"
          }
     }]
}
</script>

Это допустимо для JSON-LD и соответствует требованиям Schema.org.

Однако я бы все равно добавил URL-адрес последнего/текущего элемента. В случае RDFa или Microdata я бы использовал элемент link для URL-адреса последнего элемента (поэтому URL-адрес не доступен для посетителей, но у ботов больше данных), но в случае JSON-LD эта проблема не решается. актуален в первую очередь, поскольку посетители-люди обычно не взаимодействуют с ним.

Единственным возможным недостатком может быть то, что потребитель может запутаться, если содержимое в HTML не соответствует содержимому в JSON-LD (т. е. отсутствует URL-адрес последнего элемента). Но я бы посчитал этот риск довольно низким, так как должно быть хорошо известно, что существуют разные способы обработки последнего элемента хлебных крошек.


Что касается документации, Schema.org только говорит, что BreadcrumbList "обычно заканчивается текущей страницей".

И в качестве примера для потребителя Google говорит то же самое для своей функции хлебных крошек:

Навигационная цепочка может включать или не включать навигационную цепочку для страницы, на которой она появляется.

Но они ничего не говорят о случае, когда последний элемент включается без его URL.

person unor    schedule 13.11.2015
comment
Добавление URL-адреса в последнюю навигационную цепочку не будет ли он отображаться в результатах поиска Google? - person Brendan Vogt; 16.11.2015
comment
@BrendanVogt: я не мог представить, почему это должно появиться. Google согласен с обоими вариантами (включая или не включая последний/текущий элемент), и я предполагаю, что они обрабатывают эти случаи одинаково: не показывают его в своей поисковой выдаче (потому что это было бы лишним). - person unor; 16.11.2015
comment
Не могли бы вы предоставить некоторую разметку для вашего предложения элемента ссылки с использованием микроданных? - person Brendan Vogt; 27.01.2016
comment
@BrendanVogt: вы просто замените последний элемент a элементом link (вот пример с элементом link на itemprop в body< /а>). - person unor; 27.01.2016
comment
Еще один вопрос относительно кода JSON-LD, который вы разместили. Не могли бы вы также добавить сюда ссылку на последний элемент, даже если на него нельзя ссылаться? - person Brendan Vogt; 18.02.2016
comment
@BrendanVogt: Вы имеете в виду, добавлю ли я @id к последним ListItem тоже? Да (как я уже писал, Однако я бы все равно добавил URL последнего/текущего элемента.) - person unor; 18.02.2016

я не эксперт по SEO и точно не знаю, какова ваша цель, но чтение связанного API не указывает, является ли ссылка (@id) обязательной в JSON-LD, а из официальной документации документация JSON-LD кажется, что их можно опустить, но с возможными нежелательными последствиями.

6.14 Идентификация пустых узлов

Иногда возникает необходимость иметь возможность выражать информацию, не имея возможности однозначно идентифицировать узел с помощью IRI. Этот тип узла называется пустым узлом. JSON-LD не требует, чтобы все узлы идентифицировались с помощью @id. Однако для некоторых топологий графов может потребоваться, чтобы идентификаторы были сериализуемыми. Графы, содержащие циклы, например, не могут быть сериализованы с использованием только встраивания, для соединения узлов необходимо использовать @id. В этих ситуациях можно использовать пустые идентификаторы узлов, которые выглядят как IRI с символом подчеркивания (_) в качестве схемы. Это позволяет ссылаться на узел локально внутри документа, но делает невозможным обращение к узлу из внешнего документа. Пустой идентификатор узла ограничивается документом, в котором он используется.

в этом конкретном случае я оставлю пустым последний элемент или попытаюсь добавить его и опустить URL-адрес.

если вы хотите быть уверенным в предварительном просмотре актуальной страницы (как в связанной документации) на странице поиска google, чтобы в списке хлебных крошек появилась вырезанная страница, я предлагаю добавить скрытый элемент в ol со ссылкой на текущую страницу и добавьте его в список JSON-LD с помощью ссылки.

<ol class="breadcrumb">
 <li><a href="http://www.example.com/">Home</a></li>
 <li><a href="http://www.example.com/brands">Brands</a></li>
 <li class="hidden"><a href="http://www.example.com/My_Brand">My Brand</a></li>
 <li class="active">My Brand</li>
</ol>
person Emanuele Parisio    schedule 13.11.2015

<script type="application/ld+json">
{
     "@context": "http://schema.org",
     "@type": "BreadcrumbList",
     "itemListElement": [{
          "@type": "ListItem",
          "position": 1,
          "item": {
               "@id": "http://www.example.com/",
               "name": "Home"
          }
     }, {
          "@type": "ListItem",
          "position": 2,
          "item": {
               "@id": "http://www.example.com/brands",
               "name": "Brands"
          }
     }, {
          "@type": "ListItem",
          "position": 3,
          "item": {
          	"@id": "http://www.example.com/brands/mybrand",
               "name": "My Brand"
          }
     }]
}
</script>

Здесь указан правильный код Jason-LD.

Хотя Unor говорит, что его код проверен, обратите внимание, что его код не проверяется без последнего item.id, в https://search.google.com/structured-data/testing-tool

person Webengineer    schedule 10.12.2018