DLE устраняем data-vocabulary.org schema deprecated

Google прислал предупреждение:

На Вашем сайте обнаружены проблемы (1) категории "Строки навигации".

Основные предупреждения

Предупреждения – повод задуматься об оптимизации ресурса. Некоторые предупреждения позволяют узнать, как улучшить вид страниц в результатах поиска Google. То, из-за чего сегодня выносится предупреждение, в будущем может классифицироваться как ошибка. На основании анализа Вашего сайта были вынесены следующие предупреждения:

data-vocabulary.org schema deprecated

В новых версиях DLE уже используется schema.org, а для старых можно исправить так:

Не забываем сохранять бэкапы файлов на случай если что-то пойдёт не так. В разных версиях DLE заменяемые функции могут отличаться от этих, но всё должно работать. Я исправлял для движка версии 10.0.

Открываем engine/engine.php ищем функцию формирующую speedbar:

/*
=====================================================
 Формирование speedbar 
=====================================================
*/
if ($config['speedbar'] and ! isset ( $view_template )) {
	
	$s_navigation = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"{$config['http_home_url']}\" itemprop=\"url\"><span itemprop=\"title\">" . $config['short_title'] . "</span></a></span>";

	if (intval($category_id)) $s_navigation .= " &raquo; " . get_breadcrumbcategories ( intval($category_id) );
	elseif ($do == 'tags') {
		
		if ($config['allow_alt_url'] == "yes") $s_navigation .= " &raquo; <span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"" . $config['http_home_url'] . "tags/\" itemprop=\"url\"><span itemprop=\"title\">" . $lang['tag_cloud'] . "</span></a></span> &raquo; " . $tag;
		else $s_navigation .= " &raquo; <span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"?do=tags\" itemprop=\"url\"><span itemprop=\"title\">" . $lang['tag_cloud'] . "</span></a></span> &raquo; " . $tag;

	} elseif ($nam_e) $s_navigation .= " &raquo; " . $nam_e;

	if ($titl_e) $s_navigation .= " &raquo; " . $titl_e;
	
	$tpl->load_template ( 'speedbar.tpl' );
	$tpl->set ( '{speedbar}', '<span id="dle-speedbar">' . stripslashes ( $s_navigation ) . '</span>' );
	$tpl->compile ( 'speedbar' );
	$tpl->clear ();

}

заменяем её на:

/*
=====================================================
 Формирование speedbar 
=====================================================
*/
if ($config['speedbar'] AND !$view_template ) {
	
	$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 = "";

	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 .= " {$config['speedbar_separator']} " . get_breadcrumbcategories ( intval($category_id), $config['speedbar_separator'], $last_link );
		
	} elseif ($do == 'tags') {
		
		if ($config['allow_alt_url']) $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;
		else $s_navigation .= " {$config['speedbar_separator']} <span itemprop=\"itemListElement\" itemscope itemtype=\"https://schema.org/ListItem\"><meta itemprop=\"position\" content=\"2\"><a href=\"?do=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->load_template ( 'speedbar.tpl' );
	$tpl->set ( '{speedbar}', '<span id="dle-speedbar" itemscope itemtype="https://schema.org/BreadcrumbList">' . stripslashes ( $s_navigation ) . '</span>' );
	$tpl->compile ( 'speedbar' );
	$tpl->clear ();

}

Дальше открываем engine/modules/functions.php и ищем функцию

function get_breadcrumbcategories($id) {
	
	global $cat_info, $config, $PHP_SELF;
	
	if( ! $id ) return;
	
	$parent_id = $cat_info[$id]['parentid'];
	
	if( $config['allow_alt_url'] == "yes" ) $list = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"" . $config['http_home_url'] . get_url( $id ) . "/\" itemprop=\"url\"><span itemprop=\"title\">{$cat_info[$id]['name']}</span></a></span>";
	else $list = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"$PHP_SELF?do=cat&amp;category={$cat_info[$id]['alt_name']}\" itemprop=\"url\"><span itemprop=\"title\">{$cat_info[$id]['name']}</span></a></span>";
	
	while ( $parent_id ) {
		
		if( $config['allow_alt_url'] == "yes" ) $list = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"" . $config['http_home_url'] . get_url( $parent_id ) . "/\" itemprop=\"url\"><span itemprop=\"title\">{$cat_info[$parent_id]['name']}</span></a></span>" . " &raquo; " . $list;
		else $list = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"$PHP_SELF?do=cat&amp;category={$cat_info[$parent_id]['alt_name']}\" itemprop=\"url\"><span itemprop=\"title\">{$cat_info[$parent_id]['name']}</span></a></span>" . " &raquo; " . $list;
		
		$parent_id = $cat_info[$parent_id]['parentid'];
		
		if( $cat_info[$parent_id]['parentid'] == $cat_info[$parent_id]['id'] ) break;
	
	}
	
	return $list;
}

заменяем её на:

function get_breadcrumbcategories($id, $separator="&raquo;", $last_link = true) {
	
	global $cat_info, $config, $PHP_SELF;
	
	if( !$id ) return;
	
	$parent_id = $cat_info[$id]['parentid'];
	$list = $temp = array();
	$pos = 2;
	
	if ($last_link)	{
		
		if( $config['allow_alt_url'] ) $list[] = "<span itemprop=\"itemListElement\" itemscope itemtype=\"https://schema.org/ListItem\"><meta itemprop=\"position\" content=\"{pos}\"><a href=\"" . $config['http_home_url'] . get_url( $id ) . "/\" itemprop=\"item\"><span itemprop=\"name\">{$cat_info[$id]['name']}</span></a></span>";
		else $list[] = "<span itemprop=\"itemListElement\" itemscope itemtype=\"https://schema.org/ListItem\"><meta itemprop=\"position\" content=\"{pos}\"><a href=\"$PHP_SELF?do=cat&amp;category={$cat_info[$id]['alt_name']}\" itemprop=\"item\"><span itemprop=\"name\">{$cat_info[$id]['name']}</span></a></span>";
		
	} else {
		
		$list[] = $cat_info[$id]['name'];
		
	}
	
	while ( $parent_id ) {
		
		if( $config['allow_alt_url'] ) $list[] = "<span itemprop=\"itemListElement\" itemscope itemtype=\"https://schema.org/ListItem\"><meta itemprop=\"position\" content=\"{pos}\"><a href=\"" . $config['http_home_url'] . get_url( $parent_id ) . "/\" itemprop=\"item\"><span itemprop=\"name\">{$cat_info[$parent_id]['name']}</span></a></span>" . " {$separator} ";
		else $list[] = "<span itemprop=\"itemListElement\" itemscope itemtype=\"https://schema.org/ListItem\"><meta itemprop=\"position\" content=\"{pos}\"><a href=\"$PHP_SELF?do=cat&amp;category={$cat_info[$parent_id]['alt_name']}\" itemprop=\"item\"><span itemprop=\"name\">{$cat_info[$parent_id]['name']}</span></a></span>" . " {$separator} ";
		
		$parent_id = $cat_info[$parent_id]['parentid'];

		if($parent_id) {		
			if( $cat_info[$parent_id]['parentid'] == $cat_info[$parent_id]['id'] ) break;
		}
		
	}
	if(count($list)) {
		$list = array_reverse($list);
		foreach($list as $value) {
			$temp[] = str_replace("{pos}", $pos, $value);
			$pos ++;
		}
		$list = $temp;
	}

	
	
	return implode("", $list);
}

В файле /engine/data/config.php

после строчки 

'news_restricted' => '0',

вставляем(если нет):

'speedbar_separator' => '&raquo;',

Всё, идём в Google Search Console и заказываем перепроверку.

Все материалы сайта не претендуют на безусловную правильность, а являются лишь примерами решения некоторых задач.
Copyright © 2025 wetweb.ru