Хлебные крошки в Speedbar


Хлебные крошки в Speedbar

Как известно, в 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

Открыть файл engine/engine.php
Найти код:
if ($config['speedbar']
...
}
?>

Заменить на:
if ($config['speedbar'] AND !$view_template ) {
	function get_breadcrumblistcategories($id,$sec = false){
		global $speedbar,$cat_info,$config,$cstart,$dle_module;
		if(!$id) return;
		$parent_id = $cat_info[$id]['parentid'];
		if($parent_id) get_breadcrumblistcategories( $parent_id, true );
		if($sec OR $cstart>1 OR $dle_module!='cat') $speedbar[] = array( $config['http_home_url'] . get_url( $id ) . '/', $cat_info[$id]['name'], $cat_info[$id]['metatitle'] );
		else $speedbar[] = $cat_info[$id]['name'];
	}
	$config['speedbar_separator'] = $config['speedbar_separator'] ? trim($config['speedbar_separator']) : "&raquo";
	$speedbar = array( array( $config['http_home_url'], $config['short_title'], $config['home_title'] ) );
	if (intval($category_id)) get_breadcrumblistcategories( intval($category_id) );
	elseif( $do == 'tags' ){
		$speedbar[] = array( "/tags/", $lang['tag_cloud'] );
		$speedbar[] = $tag;
	}elseif($nam_e) $speedbar[] = $nam_e;

	if($titl_e) $speedbar[] = $titl_e;
	elseif( isset($_GET['cstart']) AND intval($_GET['cstart']) > 1 ) $speedbar[] = $lang['news_site']." ".intval($_GET['cstart']);

	foreach($speedbar as $k=>$v){
		$speedbar[$k] = '<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">';
		$title_s = "<span itemprop=\"name\">".(is_array($v) ? $v[1] : $v)."</span>";
		$speedbar[$k] .= is_array($v) ? "<a itemprop=\"item\" href=\"{$v[0]}\" title=\"".($v[2] ?: $v[1])."\">{$title_s}</a>" : $title_s;
		$speedbar[$k] .= "<meta itemprop=\"position\" content=\"".( $k+1 )."\" /></li>";
	}
	$tpl->load_template ( 'speedbar.tpl' );
	$tpl->set ( "{speedbar}", "<ul itemscope itemtype=\"http://schema.org/BreadcrumbList\" class=\"speedbar\">".implode("<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;
}


Реклама
Информация
Яндекс.Метрика