Блок пользователя
Регистрация на нашем сайте позволит вам общаться на форумах и получить доступ к другому полезному функционалу
Вы вошли как Гость

Навигационная цепочка с поддержкой schema.org

  • 442 просмотра
  • 23 января, 2023
  • Обновлено: 16 октября, 2023
  • admin
  • Время чтения: 2 минуты

Использование микроразметки schema.org является признаком хорошего тона, поскольку позволяет структурировать данные, размещенные на сайте. Тем самым обеспечивается представление информации в дружественном для поисковых систем виде.

В полном виде применение микроразметки мы сейчас рассматривать не будем, а ограничимся только “хлебными крошками”. Это важный и полезный элемент сайта, облегчающий пользователю навигацию по его разделам и страницам.

В самом простом виде “хлебные крошки” имеют следующую разметку:

<ul>
 <li>
  <a href="#">Главная</a>
 </li>
 <li>
  <a href="#">Раздел</a>
 </li>
...
 <li>
  <a href="#">Страница</a>
 </li>
</ul>

При использовании Bootstrap разметка немного усложняется:

<ul class="breadcrumb">
 <li class="breadcrumb-item">
  <a href="#">Главная</a>
 </li>
 <li class="breadcrumb-item">
  <a href="#">Раздел</a>
 </li>
...
 <li class="breadcrumb-item">
  <a href="#">Страница</a>
 </li>
</ul>

При использовании микроразметки и Bootstrap все становится еще немного сложнее:

<ul class="breadcrumb" itemscope="" itemtype="https://schema.org/BreadcrumbList">
 <li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
  <a href="#" itemprop="item">
   <span itemprop="name">Главная</span>
   <meta itemprop="position" content="1">
  </a>
 </li>
 <li class="breadcrumb-item" itemprop="itemListElement" itemscope= itemtype="https://schema.org/ListItem">
  <a href="#" itemprop="item">
   <span itemprop="name">Раздел</span>
   <meta itemprop="position" content="2">
  </a>
 </li>
...
 <li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
  <span itemprop="name">Страница</span>
  <meta itemprop="position" content="3">
 </li>
</ul>

Реализовать такой функционал одной только версткой не получится: появляется элемент meta с атрибутом content, фактически представляющим собой счетчик "крошек". Поэтому для решения задачи задействуем плагин Crumbs, в котором можно и получить доступ к счетчику элементов и вывести его значения в цикле.

Прежде всего, добавим в настройки плагина (файл crumbs.setup.php) опцию включения микроразметки:

schema=12:radio::1:Use schema.org markup

Далее расширим ресурсы крошек, добавив вариант с миркоразметкой:

$R['crumbs_open']      = '<ul class="breadcrumb">';
$R['crumbs_item']      = '<li class="breadcrumb-item"><a href="{$url}" title="{$title}">{$title}</a></li>';
$R['crumbs_item_last'] = '<li class="breadcrumb-item">{$title}</li>';
$R['crumbs_close']     = '</ul>';

$R['schema_crumbs_open']      = '<ul class="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList">';
$R['schema_crumbs_item']      = '<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><a href="{$url}" title="{$title}" itemprop="item"><span itemprop="name">{$title}</span><meta itemprop="position" content="{$number}" /></a></li>';
$R['schema_crumbs_item_last'] = '<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><span itemprop="name">{$title}</span><meta itemprop="position" content="{$number}" /></li>';
$R['schema_crumbs_close']     = '</ul>';

Остается немного подправить функцию для задействования нашей новой настройки:

...
if (Cot::$cfg['plugin']['crumbs']['schema']) {
 $rc_prefix = "schema_crumbs_";
} else {
 $rc_prefix = "crumbs_";
}
...
$out = cot_rc($rc_prefix . 'open');
...
$rc_name = ($i == $cnt - 1) ? $rc_prefix . 'item_last' : $rc_prefix . 'item';
...
$out .= cot_rc($rc_prefix . 'close');
...

Теперь плагин Crumbs сможет создавать навигациюнную цепочку или "хлебные крошки" как в обычном варианте, так и с микроразметкой schema.org.

Новый комментарий

Имя:
Для редактирования комментария осталось 10 минут
Комментарии отсутствуют