Шаблоны для DLE » Хаки » Хлебные крошки в Speedbar + RDFa

Представляем вам хак хлебные крошки в Speedbar + RDFa для dle 11.х после его установке, как мы знаем что в dle начиная с версии 10.0 в speedbar были добавлены как говорится хлебные крошки для микроразметки а еще можете посмотреть нашу категорию хаки для dle возможно вы найдете интересное для вашего проекта.. Это довольно успешно работает и поисковики их нормально считывают, даже сам валидатор не показывает ни единой ошибки, но есть один нюанс, который немного смущает.


Обратим внимание на строку с параметром itemtype:

<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\">




По указанному адресу http://data-vocabulary.org/Breadcrumb гугл отвечает 404. That’s an error. Не знаю как вам, а меня подобное не совсем устраивает. Поэтому я переделал speedbar в компактный вид согласно схемы https://schema.org/BreadcrumbList


Установка:


1. Открыть engine/engine.php и найти:

if ($config['speedbar']
...
}
?>


Заменить на:

if ($config['speedbar'] AND !$view_template ) 
{
	$speedbar_rdfa = 1;	//Формат разметки: 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"',
		),
	);
	
	function get_breadcrumblistcategories($id,$sec = false)
	{
		global $speedbar,$cat_info,$config,$cstart,$dle_module;
		if(!$id) return;
		if( $cat_info[$id]['parentid'] ) get_breadcrumblistcategories( $cat_info[$id]['parentid'], 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']);

	$tpl->load_template ( 'speedbar.tpl' );
	foreach($speedbar as $k=>$v)
	{
		$speedbar[$k] = "<li {$speedbar_prop['li'][$speedbar_rdfa]}>";
		$title_s = "<span property=\"name\">".(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 itemprop=\"position\" content=\"".( $k+1 )."\" /></li>";
	}
	$tpl->set ( "{speedbar}", "<ul {$speedbar_prop['ul'][$speedbar_rdfa]} 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>';
}
?>


2. В стилях шаблона прописать:

.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;
}


Вариант №2


Открыть файл engine/engine.php  и в самый низ файла, перед строкой:

?>


Вставить:

if ($config['speedbar'] AND !$view_template ) {
	function getSpeedbarCategory($id = 0, $separator = '&raquo;', $is_link = false, $pos = 2)
	{
		global $cat_info, $config;
		$temp_id = $id = (int)$id;
		if (!$id) return '';
		
		$catlist = [$temp_id];
		while ($parentid = $cat_info[$temp_id]['parentid']) {
			array_unshift($catlist, $parentid);
			$temp_id = $parentid;
		};

		$speedbar = '';
		foreach ($catlist as $cat_id) {
			$speedbar .= " $separator ";
			if (!$is_link && $cat_id == $id) {
				$speedbar .= $cat_info[$cat_id]['name'];
			} else {
				$speedbar .= "<span itemprop=\"itemListElement\" itemscope itemtype=\"https://schema.org/ListItem\"><meta itemprop=\"position\" content=\"{$pos}\"><a href=\"" . $config['http_home_url'] . get_url($cat_id) . "/\" itemprop=\"item\"><span itemprop=\"name\">{$cat_info[$cat_id]['name']}</span></a></span>";
			}
			$pos++;
		}
		return $speedbar;
	}

	$s_navigation = "<span itemprop=\"itemListElement\" itemscope itemtype=\"https://schema.org/ListItem\"><meta itemprop=\"position\" content=\"1\"><a href=\"{$config['http_home_url']}\" itemprop=\"item\"><span itemprop=\"name\">" . $config['short_title'] . "</span></a></span>";

	if ($config['start_site'] == 3 AND $_SERVER['QUERY_STRING'] == "" AND !$_POST['do']) $titl_e = "";
	$config['speedbar_separator'] || $config['speedbar_separator'] = ' &raquo; ';

	if (intval($category_id)){
		if($titl_e OR (isset($_GET['cstart']) AND intval($_GET['cstart']) > 1) ) {
			$last_link = true;
		} else $last_link = false;
		$s_navigation .= getSpeedbarCategory($category_id, $config['speedbar_separator'], $last_link);
	} elseif ($do == 'tags') {
		$s_navigation .= " {$config['speedbar_separator']} <span itemprop=\"itemListElement\" itemscope itemtype=\"https://schema.org/ListItem\"><meta itemprop=\"position\" content=\"2\"><a href=\"" . $config['http_home_url'] . "tags/\" itemprop=\"item\"><span itemprop=\"name\">" . $lang['tag_cloud'] . "</span></a></span> {$config['speedbar_separator']} " . $tag;
	} elseif ($nam_e) $s_navigation .= " {$config['speedbar_separator']} " . $nam_e;

	if ($titl_e) {
		$s_navigation .= " {$config['speedbar_separator']} " . $titl_e;
	} else {
		if ( isset($_GET['cstart']) AND intval($_GET['cstart']) > 1 ){
			$page_extra = " {$config['speedbar_separator']} ".$lang['news_site']." ".intval($_GET['cstart']);
		} else $page_extra = '';
		$s_navigation .= $page_extra;
	}

	$tpl->result['speedbar'] = '';
	$tpl->load_template('speedbar.tpl');
	$tpl->set('{speedbar}', '<span id="dle-speedbar"><span itemscope itemtype="https://schema.org/BreadcrumbList">' . stripslashes ($s_navigation) . '</span></span>');
	$tpl->compile('speedbar');
	$tpl->clear ();
}



Все!


Пример работы можно видеть на скриншоте 3 и 4.


Загрузка не требуется!
  • Версия DLE: 11.x
  • Кодировка: utf-8, win-1251
  • Категория: Хаки
  • Автор: Sander
  • Источник:

собрано 3050.00 рублей Поддержать автора

Войдите на сайт


Все собранные средства будут переданы автору этой статьи - DEN
Сумма перевода от 10.00 рублей
00
419
0
31-07-2022, 17:44
Обсудить (0)
Похожие хаки
Комментарии
Минимальная длина комментария - 10 знаков, комментарии могут модерироваться!
Комментариев еще нет. Вы можете стать первым!
Помощь в публикации комментариев:
1.) Если вы хотите задать вопрос, тогда просто оставьте комментарий, не нужно вопрос добавлять в ответ.
2.) Если вы хотите ответить на комментарий, для этого есть кнопка "ответить" под нужным вам вопросом.
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Мы ценим вашу конфиденциальность
Мы используем файлы "cookie" на нашем веб-сайте, чтобы предоставить вам наиболее релевентный результат, помня ваши предпочтения и повторные посещения.
Нажимая "Принять" вы соглашаетесь на использование всех файлов "cookie".
Принять
Не принимаю
Показать цели
X

Платные услуги новостей