Структурированные данные Ошибки в меток: заголовок и URL отсутствуют

Я только что проверил тест и получил две ошибки на всех страницах моих продуктов в разделе breadcrumb (2) теста Googl Structured Data Tool.

Он говорит, что у Breadcrumb 2 отсутствует заголовок и URL.

Когда я нажимаю на ошибку, она приводит меня к следующему фрагменту кода

<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">;

Необработанный код настраивается как таковой:

{% if settings.product_breadcrumb %}
      <div class="breadcrumb_text">
        <span itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="{{ shop.url }}" title="{{ shop.name | escape }}" itemprop="url"><span itemprop="title">{{ 'general.breadcrumbs.home' | t }}</span></a></span> 
        &nbsp;<span class="icon-right-arrow"></span>
        <span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
          {% if collection %}
            <a href="{{ collection.url }}" title="{{ collection.title | escape }}">{{ collection.title }}</a>
          {% else %}
            <a href="/collections/all" title="{{ collections.all.title }}">{{ collections.all.title }}</a>     
          {% endif %}
        </span>

Все выглядит хорошо на моем конце ??? Какие-либо предложения?

3 голоса | спросил Lauren 10 PM00000050000000931 2017, 17:49:09

2 ответа


1

Прежде чем мы перейдем к коду, я считаю, что метод data-vocabulary.org по разметке панировочных сухарей, вероятно, устаревает. В прошлом, похоже, Google предпочитал data-vocabulary.org специально для сухарей, но сегодня, если вы посмотрите на их спецификацию Structured Data Breadcrumb, вы увидите, что им нравится schema.org или JSON-LD. (Подробнее здесь: https://developers.google.com/search/docs/типы данных /панировочные сухари .)

Еще одна вещь, которую следует учитывать, заключается в том, что SDTT Google тоже запутался. Вы используете макросы в своем коде, и, как вы увидите, это отчасти то, что бросает ошибки. Инструмент отличный, но если вы знаете, что что-то имеет смысл в вашем коде и является правильным, вам, возможно, придется идти со своим собственным кодом.

Хорошо, вот ваш код. Я изменил его, чтобы заставить его работать, и отступом для ясности:

<div class="breadcrumb_text">
  <span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
    <a href="http://www.example.com" title="{{ shop.name | escape }}" itemprop="url">
      <span itemprop="title">{{ 'general.breadcrumbs.home' | t }}</span>
    </a>
  </span>&nbsp;
  <span class="icon-right-arrow"></span>
  <span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
          {% if collection %}
    <a href="http://www.example.com" title="{{ collection.title | escape }}" itemprop="url">         
      <span itemprop="title">{{ collection.title }}</span>
    </a>
          {% else %}
    <a href="http://www.example.com" title="{{ collections.all.title }}" itemprop="url">
      <span itemprop="title">{{ collections.all.title }}</span>
    </a>     
          {% endif %}
  </span>
</div>

Это единственный способ проверить его.

Кстати, я только опустил первую строку, {% if settings.product_breadcrumb %}, потому что это бросало ошибки. Предположим, что он есть. Я также включил закрывающий тег </div> для полноты.

Когда ошибка в инструменте тестирования привела вас к двум экземплярам <span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">, это потому, что они идентифицировали ошибки в двух блоках, которые начните с этого, не в самих этих строках.

Обратите внимание, что во всех трех экземплярах я заменил ваш URL-адрес фактическим URL-адресом (fake /sample) - http: //www.example.com . Это единственный способ избавиться от этих ошибок. Учитывая, что ваш макрос приведет к фактическому URL-адресу, вы должны быть в порядке, надеюсь. (Когда вы устанавливаете страницу вживую, повторите проверку, запустив URL страницы, а не код, через валидатор.) Дело в том, что сам инструмент распознает только полный URL.

Для вашего условного оператора вам не хватает itemprop="url" для каждой гиперссылки. Как только это было добавлено, валидатор жаловался на недостающее имя. Поэтому я добавил теги <span>, с помощью itemprop="title" как и у вас в первом блоке кода.

В принципе, вам нужно иметь следующее для каждой панировки, чтобы заставить его работать:

itemscope itemtype="http://data-vocabulary.org/Breadcrumb"
itemprop="url"
itemprop="title"

Ситуация с URL-адресом - это та, где вам нужно будет провести некоторое тестирование.

ответил Henry Visotski 11 AM000000120000003731 2017, 00:40:37
1

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

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [{
    "@type": "ListItem",
    "position": 1,
    "item": {
      "@id": "https://example.com/books",
      "name": "Books",
      "image": "http://example.com/images/icon-book.png"
    }
  },{
    "@type": "ListItem",
    "position": 2,
    "item": {
      "@id": "https://example.com/books/authors",
      "name": "Authors",
      "image": "http://example.com/images/icon-author.png"
    }
  }]
}
</script>

Он может быть реализован в нижней части тела и будет полностью распознан Google, даже если вы заполнили его данными после onLoad, но не слишком поздно - макс. Через 5 секунд.

ответил Evgeniy 11 AM000000110000003331 2017, 11:09:33

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132