Google ругается на Breadcrumb

InstantCMS 2.X

Валидация микроразметки

#1 4 марта 2019 в 10:52
Здравствуйте. Breadcrumb не проходит валидацию в Google. Пишет надо указать значения item и position. Соответственно и сайт в выдаче Гугл смотрится убого.
Я так понял данные, прописанные в assets/ui/breadcrumbs.tpl.php устарели.
Пытался сам исправить, согласно инструкции
образец:

  1. <ol itemscope itemtype="http://schema.org/BreadcrumbList">
  2. <li itemprop="itemListElement" itemscope
  3. itemtype="http://schema.org/ListItem">
  4. <a itemprop="item" href="https://example.com/dresses">
  5. <span itemprop="name">Dresses</span></a>
  6. <meta itemprop="position" content="1" />
  7. </li>
  8. <li itemprop="itemListElement" itemscope
  9. itemtype="http://schema.org/ListItem">
  10. <a itemprop="item" href="https://example.com/dresses/real">
  11. <span itemprop="name">Real Dresses</span></a>
  12. <meta itemprop="position" content="2" />
  13. </li>
  14. </ol>
и прописать в этой части кода из дефолтного файла:

  1. <?php foreach($breadcrumbs as $id=>$item){ ?>
  2.  
  3. <?php if (in_array($item['href'], $listed)){ continue; } ?>
  4.  
  5. <li <?php if (!isset($item['is_last'])){ ?>itemscope itemtype="http://data-vocabulary.org/Breadcrumb"<?php } ?>>
  6. <?php if (!isset($item['is_last'])){ ?>
  7. <a href="<?php html($item['href']); ?>" itemprop="url"><span itemprop="title"><?php html($item['title']); ?></span></a>
  8. <?php } else { ?>
  9. <span><?php html($item['title']); ?></span>
  10. <?php } ?>
  11. </li>
  12.  
  13. <?php if ($id < sizeof($breadcrumbs)-1){ ?>
  14. <li class="sep"></li>
  15. <?php } ?>
  16.  
  17. <?php $listed[] = $item['href']; ?>
  18.  
  19. <?php } ?>
Но ошибки не исчезают. Подскажите, как можно прописать вывод breadcrumbs, согласно новых требований.
#2 4 марта 2019 в 11:00
  1. <?php $listed = array(); ?>
  2. <ul itemscope itemtype="https://schema.org/BreadcrumbList">
  3.  
  4. <li class="home" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
  5. <a href="<?php echo $options['home_url']; ?>" itemprop="item"><meta itemprop="name" content="<?php echo LANG_HOME; ?>"/><meta itemprop="position" content="1"></a>
  6. </li>
  7.  
  8. <?php if ($breadcrumbs) { ?>
  9.  
  10. <li class="sep"></li>
  11.  
  12. <?php foreach($breadcrumbs as $id=>$item){ ?>
  13.  
  14. <?php if (in_array($item['href'], $listed)){ continue; } ?>
  15.  
  16. <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
  17. <?php if (!isset($item['is_last'])){ ?>
  18. <a href="<?php html($item['href']); ?>" itemprop="item"><span itemprop="name"><?php html($item['title']); ?></span><meta itemprop="position" content="<?php echo ($id + 2); ?>"></a>
  19. <?php } else { ?>
  20. <a itemprop="item" href="<?php html($item['href']); ?>" class="lastitem"><span itemprop="name"><?php html($item['title']); ?></span><meta itemprop="position" content="<?php echo ($id + 2); ?>"></a>
  21. <?php } ?>
  22. </li>
  23.  
  24. <?php if ($id < sizeof($breadcrumbs)-1){ ?>
  25. <li class="sep"></li>
  26. <?php } ?>
  27.  
  28. <?php $listed[] = $item['href']; ?>
  29.  
  30. <?php } ?>
  31.  
  32. <?php } ?>
  33. </ul>
#3 4 марта 2019 в 11:16

templates/default/assets/ui/breadcrumbs.tpl.php


Спасибо. Но ошибки остались:
1.Необходимо указать значение для поля item.
2.Необходимо указать значение для поля position.
Может из-за того, что выдаёт в @id — адрес моего сайта/breadcrumbs, но там битая ссылка?
И заголовок новости в хлебных крошках стал отображаться в виде ссылки, а был просто текст, что не очень удобно.
#4 4 марта 2019 в 12:18

1.Необходимо указать значение для поля item.
2.Необходимо указать значение для поля position.

Pawell
Так как раз в этом коде это и указано. На 2.10.1 полет нормальный, может в 2.11 что-то изменилось, не знаю. Буду за компом сделаю скриншот.
#5 4 марта 2019 в 13:37
Насчет ссылки для последнего уровня — тут как бы на любителя. Последнему уровню добавлен класс, можно стилизовать, чтобы было похоже на простой текст. В поисковиках все нормально с этим делом.






#6 4 марта 2019 в 14:37
У меня 2.11, выходит, что в обновлении что-то. Гугл по-прежнему выдаёт эти ошибки. Яндекс также, как у вас — крошки корректны, но появилось следующее:
ОШИБКА: префикс op неизвестен валидатору, укажите его явно атрибутом prefix
resource = .......
www.w3.org/1999/xhtml/vocab#search = .../search/opensearch
op:markup_version = v1.0
это, как я понял прописано в конфигурации.

#7 4 марта 2019 в 14:47
Pawell, по дефолту микроразметка хлебных крошек в инстанте vocabulary. Я сделал микроразметку schema.org, и привел Вам для примера код. Там немного по-другому. Но Вы видимо, его использовали частично, а не полностью? Тогда конечно будут ошибки. Формат другой. Попробуйте полностью заменить код в Вашем файле на мой. Потом вернете, если не получится.
#8 4 марта 2019 в 14:53


Попробуйте полностью заменить код в Вашем файле на мой.

чебурек дохлэй мыш
Я полностью менял.
#9 4 марта 2019 в 14:59
Значит что-то не то меняли. Может у Вас в шаблоне, который Вы используете, есть файл такой же? Значит надо менять его. Можете сделать скриншот кода хлебных крошек, которые у Вас на сайте выводятся? Сравните, что в моем скриншоте с валидатора Гугла и что в Вашем — вообще все другое.
#10 4 марта 2019 в 15:20


Можете сделать скриншот кода хлебных крошек, которые у Вас на сайте выводятся?

чебурек дохлэй мыш
  1. <div id="breadcrumbs">
  2. <ul itemscope itemtype="https://schema.org/BreadcrumbList">
  3.  
  4. <li class="home" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
  5. <a href="/" itemprop="item"><meta itemprop="name" content="Главная"/><meta itemprop="position" content="1"></a>
  6. </li>
  7.  
  8.  
  9. <li class="sep"></li>
  10.  
  11.  
  12.  
  13. <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
  14. <a href="/news" itemprop="item"><span itemprop="name">Новости</span><meta itemprop="position" content="2"></a>
  15. </li>
  16.  
  17. <li class="sep"></li>
  18.  
  19.  
  20.  
  21.  
  22. <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
  23. <a href="http..." itemprop="item"><span itemprop="name">&&&&</span><meta itemprop="position" content="3"></a>
  24. </li>
  25.  
  26. <li class="sep"></li>
  27.  
  28.  
  29.  
  30.  
  31. <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
  32. <a itemprop="item" href="http..." class="lastitem"><span itemprop="name">Заголовок новости</span><meta itemprop="position" content="4"></a>
  33. </li>
  34.  
  35.  
  36.  
  37.  
  38. </ul> </div>
Менял в обоих файлах. Дефолтном и в рабочем шаблоне.
Причём убираю <?php html($item['href']); ?> — заголовок новости на сайте формируется всё равно ссылкой, хотя в коде её нет. И валидатор Гугла выдаёт ещё одну ошибку по этому поводу, считая item незаполненным.
#11 4 марта 2019 в 15:32
проверил про фрагменту кода

Ошибок нет. Единственное, это в коде Вы затерли сайт, поэтому выводятся гугловские ссылки.
#12 4 марта 2019 в 15:36

считая item незаполненным

Pawell
Так я потому и сделал ссылкой, чтоб никто не ругался. Но у последней ссылки есть свой класс, напишите стили для нее, типа cursor:text; color:#999; text-decoration:none; и визуально будет как простой текст.
#13 4 марта 2019 в 15:48
Спасибо. Исправил. Ссылки нет.
Короче хрень какая-то. Яндекс нормально всё видит, а Гугл не хочет.
#14 4 марта 2019 в 16:05
Вы привели кусок кода, откуда этот код? Я его вставил в валидатор гугла, ошибок нет. Может у Вас до этого кода в шаблоне еще что-то прописано? Можно на сайт глянуть? Можете в личку отправить ответным сообщением.
#15 4 марта 2019 в 18:21
Проблема решена спасибо Asnenne за участие.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.