Для лучшего отображения страницы сайта в сниппете поисковой выдачи Google нужно использовать расширенное описание для элементов страницы, в частности, для навигационных цепочек, или так называемых "хлебных крошек". Подробнее о расширенном описании элементов навигации можно прочитать в руководстве Google. В данной статье я расскажу о том, как добавить расширенное описание к «хлебным крошкам» в Drupal 7, используя микроданные или разметку RDF.
Дополняем хлебные крошки разметкой RDF
Разметку RDF следует применять в темах оформления, разработанных по стандартам XHTML + RDFa (по умолчанию в Drupal 7 установлен именно такой doctype, также в ядро включен модуль RDF).
Для RDF-разметки «хлебных крошек» в template.php темы оформления сайта помещаем следующий код:
foreach ($vars['breadcrumb'] as $key => $breadcrumb) {
$vars['breadcrumb'][$key] = '<span typeof="v:Breadcrumb">' . $breadcrumb . '</span>';
}
}
function THEME_menu_breadcrumb_alter(&$active_trail, $item) {
foreach($active_trail as $key => $active_trail_item){
$active_trail[$key]['localized_options']['attributes']["rel"][]='v:url';
$active_trail[$key]['localized_options']['attributes']["property"][]='v:title';
}
}
function THEME_breadcrumb($variables) {
$breadcrumb = $variables['breadcrumb'];
if (!empty($breadcrumb)) {
$breadcrumb[] = drupal_get_title();
$output = '<div class="breadcrumb" xmlns:v="<a href="http://rdf.data-vocabulary.org/#">'">http://rdf.data-vocabulary.org/#">'</a> . implode(' » ', $breadcrumb) . '</div>';
return $output;
}
}
Кратко прокомментирую код. В функции THEME_preprocess_breadcrumb мы оборачиваем ссылки навигационных цепочек в элемент span с атрибутом разметки RDF typeof="v:Breadcrumb". В функции THEME_menu_breadcrumb_alter добавляем к ссылкам хлебных крошек атрибуты rel='v:url' и property='v:title'. И наконец, в функции THEME_breadcrumb мы для div-обертки навигационной цепочки добавляем атрибут xmlns:v=http://rdf.data-vocabulary.org/#.
Дополняем хлебные крошки микроданными
Для тем оформления Drupal, разработанных по стандартам HTML5 следует дополнять элементы навигации микроданными. Для решения этой задачи в Drupal нам понадобится следующий код:
foreach ($vars['breadcrumb'] as $key => $breadcrumb) {
$vars['breadcrumb'][$key] = '<span itemscope itemtype="<a href="http://data-vocabulary.org/Breadcrumb">'">http://data-vocabulary.org/Breadcrumb">'</a> . $breadcrumb . '</span>';
}
}
function THEME_menu_breadcrumb_alter(&$active_trail, $item) {
foreach($active_trail as $key => $active_trail_item){
$active_trail[$key]['
$active_trail[$key]['title'] = '<span itemprop="title">' . $active_trail[$key]['title'] . '</span>';
$active_trail[$key]['localized_options']['attributes']["itemprop"]='url';
}
}
В обоих случаях нужно вместо THEME указать имя темы сайта и очистить кеш.
Комментарии
Ваш код не работает! Выдаёт
Ваш код не работает! Выдаёт ошибку:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/..../themes/.../template.php on line 24
То есть ругается вот на эту строчку
$output = '<div class="breadcrumb" xmlns:v="<a href="<a href="http://rdf.data-vocabulary.org/#">'">http://rdf.data-vocabulary.org/#">'</a>">http://rdf.data-vocabulary.org/#">'">http://rdf.data-vocabulary.org/#">'...</a> . implode(' » ', $breadcrumb) . '</div>'; - See more at: <a href="http://sergeybelyaev.name/blog/dobavlyaem-rasshirennoe-opisanie-k-hlebnym-kroshkam-v-drupal#sthash.HZV3D9gt.dpuf">http://sergeybelyaev.name/blog/dobavlyaem-rasshirennoe-opisanie-k-hlebny...
Это из-за включенного фильтра
Это из-за включенного фильтра "Преобразовывать адреса в ссылки" формата Full HTML неверно выводился код в статье, сейчас все корректно, спасибо что заметили.
Понравился ваш блог, много
Понравился ваш блог, много полезного, а не могли бы вы сделать подобную микроразметку для хлебных крошек для Drupal 8 тема bartik , нашел файл breadcrumb.html.twig по пути /core/themes/classy/templates/navigation но подставить параметры не получается.
Здравствуйте, что именно не
Здравствуйте, что именно не получилось?