Добавление микроданных или schema.org для SEO в Drupal 7
В настоящее время я немного запутался в микроданных и schema.org. Микроданные и schema.org - это одно и то же? Я прочитал документацию Google и Microsoft, но это не помогло мне понять разницу между этими двумя именами.
Пока я понял это, я создал этот HTML-код:
<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<a href="/" itemprop="url"><span itemprop="title">My Page</span></a>
</span>
<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<a href="/cat1" itemprop="url"><span itemprop="title">Category 1</span></a>
</span>
<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<a href="/cat1/content" itemprop="url"><span itemprop="title">Content</span></a>
</span>
На мой взгляд, слишком много накладных расходов, но хорошо, если результаты поиска выглядят хорошо. Можно ли уменьшить количество HTML кода?
Кроме того, если мне это не нужно, как поисковые системы обнаруживают два разных маршрута?
Моя следующая проблема заключается в том, что я хочу применить этот формат к хлебным крошкам drupal. Я нашел в Интернете это исправление, которое я попытался включить в свой собственный модуль SEO, например:
function mymod_page_alter(&$variables) {
if (!isset($variables['breadcrumb'])) {
$variables['breadcrumb'] = theme('my_microdata', array('breadcrumb' => drupal_get_breadcrumb()));
}
}
function mymod_theme($existing, $type, $theme, $path) {
return array(
'my_microdata' => array(
'variables' => array('breadcrumb' =>array()),
),
);
}
function mymod_menu_breadcrumb_alter(&$active_trail, $item){
foreach($active_trail as $id=>$active_trail_item){
$active_trail[$id]['localized_options']['attributes']['itemprop'][]="url";
}
}
function theme_my_microdata($variables){
$breadcrumb=$variables['breadcrumb'];
print_r(debug_backtrace());
$output="*+*+*+*+*";
if (!empty($breadcrumb)) {
// Provide a navigational heading to give context for breadcrumb links to
// screen-reader users. Make the heading invisible with .element-invisible.
$output = '<h2 class="element-invisible">' . t('You are here') . '</h2>';
$output .= '<div class="breadcrumb">';
$separator="";
foreach($breadcrumb as $breadcrumb_item){
$output.='<span typeof="datav:Breadcrumb">'.$separator.$breadcrumb_item."</span>";
$separator="»";
}
$output .='</div>';
}
return $output."xXxXxXx";
}
Пока я проверил, что весь этот код выполняется. Но эта тема не применяется на моей странице. Почему этот код не работает? Может ли это быть связано с модулем breadcrumb
? Я знаю, что этот вывод будет мусором, но я не вижу результата.
Если я угадаю правильно, чем вывод, созданный theme.inc line 1682ff theme_breadcrumb(...)
вместо моего кода.
Было бы хорошо, если бы кто-нибудь мог мне помочь, даже если вы не знаете все ответы на мои вопросы!
1 ответ
Микроданные и schema.org - это одно и то же?
Нет, они не!
Микроданные - это спецификация WHATWG html. Рекомендуется упростить чтение содержимого документа компьютерами.
Schema.org - это словарь, который используется для описания предмета. Schema.org представлен Bing, Google и Yahoo.
http://en.wikipedia.org/wiki/Microdata_%28HTML%29
http://www.w3.org/TR/html5/microdata.html
Можно ли уменьшить количество HTML кода?
Посмотрите пример кода на schema.org для разметки элемента WebPage: http://schema.org/WebPage
<body itemscope itemtype="http://schema.org/WebPage"> ... <div itemprop="breadcrumb"> <a href="category/books.html">Books</a> > <a href="category/books-literature.html">Literature & Fiction</a> > <a href="category/books-classics">Classics</a> </div>
Как поисковые системы обнаруживают два разных следа
Если вместо этого вы используете приведенный выше пример из schema.org, вы отмечаете след вместо отдельных ссылок. Если вы разметите два маршрута, они оба будут распознаны как два отдельных. (Или хотя бы должно быть)
Почему этот код не работает?
Я думаю, что этот вопрос должен быть отделен от этого поста и задан в другом. Я не знаком с drupal, и некоторые люди, которые могут отвечать на вопросы относительно микроданных, даже не знают PHP.