Как известно, в DLE начиная с версии 10.0 в спидбар были добавлены так называемые хлебные хрошки для микроразметки.
Все успешно работает и поисковик их нормально читает, даже валидатор не показывает ни одной ошибки, но есть один нюанс, который немного меня смущает.
Обратим внимание на строку с параметром itemtype:
<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
По указанному адресу http://data-vocabulary.org/Breadcrumb гугл отвечает 404. That’s an error.
Не знаю как вам, а меня подобное не совсем устраивает. Поэтому я переделал спидбар в компактный вид согласно схемы http://schema.org/BreadcrumbList
Для DLE 13.x можно установить плагин GitHub
Ручная установка:
Открыть файл engine/engine.php
В самый низ файла, перед строкой:
?>
Вставить:
if ($config['speedbar'] AND !$view_template) {
$speedbar_rdfa = 0; //Формат разметки: 1 - RDFa, 0 - обычная микроразметка
$speedbar_prop = array(
'li' => array(
'itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"',
'property="itemListElement" typeof="ListItem"',
),
'a' => array(
'itemprop="item"',
'property="item" typeof="WebPage"',
),
'ul' => array(
'itemscope itemtype="http://schema.org/BreadcrumbList"',
'vocab="http://schema.org/" typeof="BreadcrumbList"',
),
'span' => array(
'itemprop="name"',
'property="name"',
),
'position' => array(
'itemprop="position"',
'property="position"',
),
);
function getBreadcrumbListCategories($id, $sec = false)
{
global $speedbar,$cat_info,$config,$dle_module;
if (!$id) {
return false;
}
if ($cat_info[$id]['parentid']) {
getBreadcrumbListCategories( $cat_info[$id]['parentid'], true );
}
$speedbar[] = array( $config['http_home_url'] . get_url( $id ) . '/', $cat_info[$id]['name'], $cat_info[$id]['metatitle'] );
}
$config['speedbar_separator'] = $config['speedbar_separator'] ? trim($config['speedbar_separator']) : "»";
$speedbar = array( array( $config['http_home_url'], $config['short_title'], $config['home_title'] ) );
if ($temp = intval($category_id)) {
getBreadcrumbListCategories( $temp );
} elseif ($do == 'tags') {
$speedbar[] = array("/tags/", $lang['tag_cloud'] );
$speedbar[] = array("/tags/" . urlencode($tag), $tag);
} elseif ($nam_e) {
$speedbar[] = $nam_e;
}
if ($mod_speedbar) {
$speedbar = array_merge($speedbar, $mod_speedbar);
}
if ($titl_e) {
$speedbar[] = $titl_e;
} elseif (isset($_GET['cstart']) && intval($_GET['cstart']) > 1) {
$speedbar[] = $lang['news_site']." ".intval($_GET['cstart']);
}
$tpl->load_template ( 'speedbar.tpl' );
$last_item = array_pop($speedbar);
$speedbar[] = is_array($last_item) ? $last_item[1] : $last_item;
foreach ($speedbar as $k => $v) {
$speedbar[$k] = "<li {$speedbar_prop['li'][$speedbar_rdfa]}>";
$title_s = "<span {$speedbar_prop['span'][$speedbar_rdfa]}>".(is_array($v) ? $v[1] : $v)."</span>";
$speedbar[$k] .= is_array($v) ? "<a {$speedbar_prop['a'][$speedbar_rdfa]} href="{$v[0]}" title="".($v[2] ?: $v[1])."">{$title_s}</a>" : $title_s;
$speedbar[$k] .= "<meta {$speedbar_prop['position'][$speedbar_rdfa]} content="".( $k+1 )."" /></li>";
}
$tpl->set( "{speedbar}", "<ul {$speedbar_prop['ul'][$speedbar_rdfa]} class="speedbar">" . join("<li class="speedbar_sep">{$config['speedbar_separator']}</li>", $speedbar) . "</ul>" );
$tpl->compile ( 'speedbar' );
$tpl->clear();
$tpl->result['speedbar'] = '<div id="dle-speedbar">'.$tpl->result['speedbar'].'</div>';
}
В стилях прописать:
.speedbar{
margin: 0;
padding: 10px;
list-style: none;
}
.speedbar:after{
content: "";
display: block;
clear: both;
}
.speedbar li{
float: left;
margin-right: 6px;
color: #222;
}
.speedbar li.speedbar_sep{
color: #999;
}
Пример работы можно видеть на моем сайте или на демо сайте.
В живую посмотреть можно на валидаторе.
С уважением,
Олег Александрович a.k.a. Sander
Источник: sandev.pro