Микроразметка Schema.org Breadcrumbs для хлебных крошек
Содержание
Schema.org – микроразметка, которая структурирует данные на сайте для поисковых систем. На основе этих данных поисковики формируют расширенные сниппеты в поисковой выдаче.
Схема разметки хлебных крошек в формате микроданных
Общая схема микроразметки Breadcrumbs в формате микроданных (Microdata) следующая:
<ul itemscope itemtype="http://schema.org/BreadcrumbList">
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<a itemprop="item" href="Ссылка_1">
<span itemprop="name">Заголовок_1</span>
</a>
<meta itemprop="position" content="1" />
</li>
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<a itemprop="item" href="Ссылка_2">
<span itemprop="name">Заголовок_2</span>
</a>
<meta itemprop="position" content="2" />
</li>
…
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<span>
Заголовок_N
<link href="Ссылка_N" itemprop="item">
<meta itemprop="name" content="Заголовок_N"/>
<meta itemprop="position" content="N" />
</span>
</li>
</ul>
Как видно, последний пункт N мы разметили по-другому. Именно так рекомендуется размечать последний пункт, когда сам по себе он не является ссылкой.
Однако разметить все пункты по аналогии с последним тоже рабочий вариант, ошибок не будет.
<ul itemscope="" itemtype="https://schema.org/BreadcrumbList">
<li itemprop="itemListElement" itemscope="" itemtype="https://schema.org/ListItem">
<a href="Ссылка_1">
Заголовок_1
<link href="Ссылка_1" itemprop="item">
<meta itemprop="name" content="Заголовок_1">
<meta itemprop="position" content="1">
</a>
</li>
<li itemprop="itemListElement" itemscope="" itemtype="https://schema.org/ListItem">
<a href="Ссылка_2">
Заголовок_2
<link href="Ссылка_2" itemprop="item">
<meta itemprop="name" content="Заголовок_2">
<meta itemprop="position" content="2">
</a>
</li>
…
<li itemprop="itemListElement" itemscope="" itemtype="https://schema.org/ListItem">
<span>
Заголовок_N
<link href="Ссылка_N" itemprop="item">
<meta itemprop="name" content="Заголовок_N">
<meta itemprop="position" content="N">
</span>
</li>
</ul>
Шаблон разметки хлебных крошек для Битрикс в формате Microdata
Минимальный код для разметки стандартного шаблона компонента bitrix:breadcrumb в формате Microdata:
<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
/**
* @global CMain $APPLICATION
* @var array $arResult
*/
if (empty($arResult)) return '';
global $APPLICATION;
$curPage = $APPLICATION->GetCurPage();
$arResult = array_values($arResult);
$itemSize = count($arResult);
$strReturn = '<ul itemscope itemtype="https://schema.org/BreadcrumbList">';
for ($index = 0; $index < $itemSize; $index++) {
$title = htmlspecialcharsex($arResult[$index]['TITLE']);
$link = $arResult[$index]['LINK'] ?: $curPage;
if ($index != $itemSize - 1) {
$strReturn .= '
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a itemprop="item" href="' . $link . '">
<span itemprop="name">'
. $title .
'</span>
</a>
<meta itemprop="position" content="' . ($index + 1) . '" />
</li>';
} else {
$strReturn .= '
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<span>'
. $title . '
<link href="' . $link . '" itemprop="item">
<meta itemprop="name" content="' . $title . '" />
<meta itemprop="position" content="' . ($index + 1) . '" />
</span>
</li>';
}
}
$strReturn .= '</ul>';
return $strReturn;
Далее уже можете добавить на элементы необходимые вам классы для стилей.
Схема разметки хлебных крошек в формате JSON-LD
JSON-LD – это способ разметки, при котором данные передаются с помощью объектов связанных данных (Linked Data, LD).
Схема микроразметки Breadcrumbs в формате JSON-LD следующая:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Заголовок_1",
"item": "Ссылка_1"
},
{
"@type": "ListItem",
"position": 2,
"name": "Заголовок_2",
"item": "Ссылка_2"
},
…
]
}
</script>
Шаблон разметки хлебных крошек для Битрикс в формате JSON-LD
Дополнить текущий шаблон хлебных крошек микроразметкой JSON-LD даже еще проще, чем микроданными. Вам всего навсего нужно добавить формирование массива JSON данных, а затем добавить его к возвращаемому HTML.
<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
/**
* @global CMain $APPLICATION
* @var array $arResult
*/
if (empty($arResult)) return '';
global $APPLICATION;
$curPage = $APPLICATION->GetCurPage();
$arResult = array_values($arResult);
$itemSize = count($arResult);
//Формируем JSON-LD структуру
$jsonLd = [
'@context' => 'https://schema.org',
'@type' => 'BreadcrumbList',
'itemListElement' => [],
];
$strReturn = '<ul>';
for ($index = 0; $index < $itemSize; $index++) {
$title = htmlspecialcharsex($arResult[$index]['TITLE']);
$link = $arResult[$index]['LINK'] ?: $curPage;
if ($index != $itemSize - 1) {
$strReturn .= '<li><a href="' . $link . '">' . $title . '</a></li>';
} else {
$strReturn .= '<li><span>' . $title . '</span></li>';
}
//Добавляем элемент в JSON-LD
$jsonLd['itemListElement'][] = [
'@type' => 'ListItem',
'position' => $index + 1,
'name' => $title,
'item' => $link,
];
}
//Переводим сформированный массив в формат JSON и добавляем к итоговому HTML
$jsonLdScript = '<script type="application/ld+json">' . json_encode($jsonLd, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . '</script>';
$strReturn .= '</ul>' . $jsonLdScript;
return $strReturn;
Или даже еще проще. Просто заменяем в файле шаблона последнюю строку:
return $strReturn;
на следующий блок кода:
global $APPLICATION;
// Формируем JSON-LD структуру
$jsonLd = [
'@context' => 'https://schema.org',
'@type' => 'BreadcrumbList',
'itemListElement' => [],
];
for ($index = 0; $index < $itemSize; $index++) {
// Добавляем элемент в JSON-LD
$jsonLd['itemListElement'][] = [
'@type' => 'ListItem',
'position' => $index + 1,
'name' => htmlspecialcharsex($arResult[$index]['TITLE']),
'item' => $arResult[$index]['LINK'] ?: $APPLICATION->GetCurPage(),
];
}
//Переводим сформированный массив в формат JSON и добавляем к итоговому HTML
$jsonLdScript = '<script type="application/ld+json">' . json_encode($jsonLd, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . '</script>';
$strReturn .= '</ul>' . $jsonLdScript;
return $strReturn;
Проверка валидности микроразметки
Проверить микроразметку можно с помощью:
Оставьте комментарий
Если эта статья была полезной для вас, оставьте комментарий ниже или задайте интересующий Вас вопрос. Ваш опыт может помочь другим читателям!
Написать комментарий