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

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

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

Как известно, в 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']) : "&raquo";
    $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;
}


Пример работы можно видеть на моем сайте или на демо сайте.

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


В живую посмотреть можно на валидаторе.

С уважением,
Олег Александрович a.k.a. Sander
Комментарии: (81)
  1. foto
    VIP 5 января 2017 15:25 #
    вот это круто) тоже замечал, то что 404 ошибка идёт, но думал фиг знает, может так нужно ему))
    а тут решение хорошее и правильное, так как микроразметка schema.org удобная
    0
  2. foto
    Посетитель 11 января 2017 20:41 #
    Спасибо, подскажите как убрать тайтл публикации из кода, что бы в Speedbar осталось только : SanDev.pro › Datalife Engine
    0
    1. foto
      Администратор 11 января 2017 22:39 #
      Вместо
      if($titl_e) $speedbar[] = $titl_e;

      Использовать
      if($titl_e AND !$news_found) $speedbar[] = $titl_e;
      +3
      1. foto
        Посетитель 11 января 2017 23:09 #
        Спасибо большое.
        0
      2. foto
        VIP 13 января 2017 05:28 #
        вообще правильно ли я понимаю, то что title тут уже как бы можно использовать, а можно и не использовать, так сказать для фантазии и извращения вебмастера лишь.
        так как микроразметка складывается от данных itemprop="name"
        к чему я? ну если будет стоять title как у Вас на сайте, либо убрать его, как спросила Elena. в результате то, особо нечего не изменится, так как микроразметка строится из данных itemprop="name"
        верно?
        0
        1. foto
          Администратор 13 января 2017 12:43 #
          По большому счету верно, для поисковиков нет разницы есть в спидбаре заголовок или нет. Они все равно в первую очередь обращают внимание на metatitle и h1
          0
  3. foto
    VIP 13 января 2017 04:39 #
    вот появился такой вопрос, а если применить данную телегу, а как быть тем у кого модуль например dle-cart Ваш.
    там вставка кода немного другая какая то, ну и поле, например найти и перед вставить, уже изменяется...
    как правильно применить к этому хаку и ещё установку в спидбар dle-cart?
    0
    1. foto
      Администратор 13 января 2017 12:39 #
      	elseif( $do == 'cart' ){
      		if( $subaction ){
      			$speedbar[] = array( "/cart/", $cart_config['metatitle'] );
      			$speedbar[] = $cart_lang["cpage_".$subaction];
      		}else $speedbar[] = $cart_config['metatitle'];
      	}
      +1
      1. foto
        VIP 14 января 2017 08:01 #
        а тут, куда вставлять? ну чтобы не намутить)
        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'] = '<span id="dle-speedbar">'.$tpl->result['speedbar'].'</span>';
        }
        ?
        0
        1. foto
          Администратор 14 января 2017 12:13 #
          Так же, перед:
          elseif( $do == 'tags' ){
          +1
  4. foto
    Посетитель 14 января 2017 14:29 #
    А в engine/modules/functions.php ничего переделывать не нужно?
    И на что это повлияет если в engine.php переделать, а в 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'] ) $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'] ) $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;
    }
    0
    1. foto
      Администратор 14 января 2017 14:51 #
      Эта функция более не используется. Вместо нее я написал свою get_breadcrumblistcategories
      Так проще установка, когда все в одном месте вставляется.
      +1
      1. foto
        Посетитель 14 января 2017 15:18 #
        Спасибо.
        0
  5. foto
    Посетитель 16 января 2017 15:41 #
    А как заменить между разделами оформление <li class="speedbar_sep">›</li>? Стрелочки не приметные, как ее заменить на стрелочку из fontawesome? Уже и стили прописал, а старая стрелочка пропала, а новая не появилась(((
    Вот класс для новой стрелочки
    .speedbar_sep {content:'\e600';font-family:'icomoon';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#b9b9b9;position:absolute;right:-22px;top:7px;font-size:25px;}
    

    Как произвести замену?
    0
    1. foto
      Администратор 16 января 2017 17:52 #
      Не проще ли в настройках движка просто указать в поле разделителя:
      <i class='icon-youricon'></i>
      +1
  6. foto
    Посетитель 17 января 2017 23:08 #
    Цитата: Sander
    Не проще ли в настройках движка просто указать в поле разделителя:
    <i class='icon-youricon'></i>

    А немного подробнее можно?))) Где именно эти настройки находятся?)
    +1
  7. foto
    Посетитель 18 января 2017 08:12 #
    Цитата: baseroad
    Цитата: Sander
    Не проще ли в настройках движка просто указать в поле разделителя:
    <i class='icon-youricon'></i>

    А немного подробнее можно?))) Где именно эти настройки находятся?)

    Нашел, спасибо)
    0
  8. foto
    Клиент 24 января 2017 12:44 #
    Отличное решение, спасибо! Не могли бы Вы только подсказать, как сделать так, чтобы
    <span id="dle-speedbar">
    шел уже после
    <div class="speedbar">
    , как было реализовано изначально? Поскольку в ином случае ругается валидатор
    0
    1. foto
      Администратор 24 января 2017 12:54 #
      Обновил инструкцию. Заменил span на div.
      +2
      1. foto
        Клиент 25 января 2017 19:22 #
        Благодарю! Заметил еще небольшой недочет с точки зрения SEO: ссылки на категории идут без слэша (Пример: http://site.ru/news). В результате данная ссылка будет иметь статус "301 Moved Permanently". Поэтому, желательно, чтобы ссылки шли изначально со слэшем.
        +2
        1. foto
          Администратор 25 января 2017 20:04 #
          Уф, точно. Как-то совсем не обратил на это внимание.
          Спасибо. Исправил код.
          0
  9. foto
    Посетитель 2 марта 2017 20:59 #
    Подскажите пожалуйста как сделать что бы на странице тега ссылка в спидбаре была кликабельна ? ( нарушала СЕО и сама на себя ссылалась) .

    И правильно ли подправила тоже самое для категорий: function get_breadcrumblistcategories($id,$sec = false){
    заменила на: function get_breadcrumblistcategories($id,$sec = "»"){
    0
    1. foto
      Посетитель 2 марта 2017 23:44 #
      заменила на: function get_breadcrumblistcategories($id,$sec = "& raquo ;"){
      0
    2. foto
      Администратор 3 марта 2017 02:24 #
      Для тегов:
      $speedbar[] = $tag;

      Заменить на
      $speedbar[] = array("/tags/".urlencode($tag), $tag);


      Для категорий:
      function get_breadcrumblistcategories($id,$sec = true){
      0
  10. foto
    Посетитель 3 марта 2017 02:49 #
    Спасибо огромное!
    0
  11. foto
    Посетитель 13 марта 2017 11:46 #
    А в чём отличия от RDFA Breadcrumb
    https://gameer.name/dle/43
    0
    1. foto
      Администратор 13 марта 2017 12:57 #
      Про разницу форматов RDFa и microdata вам лучше проконсультироваться у SEO специалистов.
      Подправил код, добавил возможность переключения типа разметки в параметре
      $speedbar_rdfa = true;
      0
  12. foto
    Клиент 21 октября 2017 00:14 #
    После обновления до DLE 12 (либо это вообще не связано с обновлением, однако до этого проблема не возникала) столкнулся со следующей ошибкой валидатора:
    The itemprop attribute was specified, but the element is not a property of any item.
    /span></a><meta itemprop="position" content="1" /></li><

    The itemprop attribute was specified, but the element is not a property of any item.
    /span></a><meta itemprop="position" content="2" /></li><
    0
    1. foto
      Администратор 23 октября 2017 14:50 #
      Был маленький недочет с этим itemprop. Для RDFa и микроразметки он по разному должен быть прописан.
      На гугловском валидаторе проверил, оба варианта работают исправно, ошибок нет.
      0
  13. foto
    VIP 15 ноября 2017 20:32 #
    А, что желательно указать в настройках системы в поле "Краткое название сайта" ? Урл домена без http или что? Или вообще не важно? А что лучше? )
    P.S. В инструкции написано:
    Найти код
    
    if ($config['speedbar']
    ...
    }
    ?>
    

    Заменить на... но уже без символов в конце:
    
    ?>
    
    0
    1. foto
      Администратор 15 ноября 2017 23:44 #
      Короткое название сайта - что угодно, но что-то что логически будет соответствовать главной странице сайта. Чтобы в гугле отображалось красиво и понятно.

      ?>

      в конце не обязателен и даже скорее вовсе не нужен.
      Желательно только чтобы последняя строка была просто пустая.
      +1
  14. foto
    Клиент 23 ноября 2017 23:31 #
    как вернуть отображения названия новости в speedbar? (как у вас на сайте )
    0
    1. foto
      Клиент 23 ноября 2017 23:34 #
      всё норм. просто сливалось с фоном и не было видно
      0
  15. foto
    Клиент 20 декабря 2017 09:54 #
    Подскажите, стоит MultiTags как сделать ссылки в speedbar как у вас на сайте KinoLem, то есть вместо "Site » Тег,Тег" сделать "Site » Тег + Тег". Интересует именно разделитель вместо запятой плюс, ссылку на облако тегов я уже убрал)))
    0
    1. foto
      Администратор 20 декабря 2017 13:21 #
      engine/engine.php
      Найти строку:
      	elseif ($do == 'tags') {

      После нее вставить:
      		$tag = str_replace(",", " + ", $tag);
      0
      1. foto
        Клиент 20 декабря 2017 14:54 #
        Спасибо!
        0
  16. foto
    VIP 17 января 2018 00:53 #
    У меня в шаблоне автор не предусмотрел в верстке тег speedbar. Отсутствие этого тега в шаблоне повлияет на микроразметку?
    P.S. На первом сайте все отлично получилось!
    0
    1. foto
      Администратор 17 января 2018 15:45 #
      speedbar - это и есть хлебные крошки.
      нет спидбира - нет крошек.
      нет крошек - нет разметки.
      +1
  17. foto
    VIP 17 января 2018 00:55 #
    На DLE 12.1 тоже нужно делать изменения?
    25. Добавлено использование микроразметки schema.org для вывода рейтинга с типом "Оценка". Использование данной микроразметки позволяет для полных новостей при выводе их в результатах поиска в Google выводить также и рейтинг публикации.
    0
    1. foto
      Администратор 17 января 2018 15:45 #
      Микроразметка для хлебных крошек и для рейтинга - это разные никак не связанные вещи.
      +1
  18. foto
    Гость 22 января 2018 20:59 #
    Здравствуйте. Скажите в Вашем коде таже проблема что и в коде DLE. Если новость добавлена в подкатегорию и ей присовена родительская и подчиненная категория, но в крошках выводится только родительская, как туда вывесьти еще и подчиненную?
    Пример:
    Новостям присвоены категории Россия --> Москва (Москва вложенная категория в Россию)

    Хлебные крошки выводятся: Главная --> Роcсия --> title новости
    Но поидее должны Главная --> Россия ---> Москва ---> title новости.
    Как сделать второй вариант? - Он получается только если не присваивать новости родительскую категорию а только вложенную. Но у меня просто всем уже так присвоено, и если так сделать то ломаеться другой функционал.
    0
    1. foto
      Администратор 22 января 2018 21:17 #
      И в DLE и в моем варианте проблем нету.
      http://color.sandev.pro/3999-mobilnyy-telefon-xiaomi-redmi-note-3-pro-dual-sim-16gb-gray.html
      Цветофильтр » Телефоны » Мобильные телефоны » Мобильный телефон Xiaomi Redmi Note 3 Pro Dual Sim 16Gb Gray

      Где:
      "Телефоны" - категория
      "Мобильные телефоны" - подкатегория категории "Телефоны"

      Но если у вас новость отмечена в подкатегории, а потом внизу так же дополнительно отмечена категория, то основной будет считаться последняя отмеченная.
      0
  19. foto
    Гость 23 февраля 2018 06:56 #
    Спасибо большое за великолепный хак! А можно как-то добавить чтобы в страницах пагинации добавлялось, вот пример: Страница 7 » из 777 страниц Думаю это чуть больше придаст уникальности страницам пагинации, что будет полезно для seo.
    0
    1. foto
      Администратор 23 февраля 2018 15:20 #
      По простому не сделать для этого нужно писать хак.
      Нужно из сформированного текста контента регуляркой получать значение общего количества страниц навигации.
      Это сделать можно, но решение нельзя сделать универсальным, для каждого шаблона будет свое регулярное выражение.
      0
  20. foto
    Гость 24 февраля 2018 21:49 #
    Здравствуйте. Отличный хак и простой но есть некоторые вопросы, над которыми бьюсь уже около 3 часов:
    Как адаптировать любые красивые хлебные крошки (например такие - pro-cod.ru/oformlenie-xlebnyx-kroshek-css.html) под этот код? Уже часа 3 мучаюсь и ни одну поставить не могу.
    И получились какие-то страшные (ссылки синего цвета, вообщем все не так, как у вас):
    b.radikal.ru/b09/1802/0c/bc5103c4abaf.png
    0
    1. foto
      Администратор 25 февраля 2018 12:51 #
      Формируемая модулем верстка вполне позволяет использовать стиль указанный по вашей ссылке.
      Но нужны хотя бы начальные знания в css и html.
      0
  21. foto
    Гость 24 февраля 2018 22:11 #
    Цитата: noname
    Здравствуйте. Отличный хак и простой но есть некоторые вопросы, над которыми бьюсь уже около 3 часов:
    Как адаптировать любые красивые хлебные крошки (например такие - pro-cod.ru/oformlenie-xlebnyx-kroshek-css.html) под этот код? Уже часа 3 мучаюсь и ни одну поставить не могу.
    И получились какие-то страшные (ссылки синего цвета, вообщем все не так, как у вас):
    b.radikal.ru/b09/1802/0c/bc5103c4abaf.png

    Забыл дописать, что DLE 10.3.
    И в самой новости ссылки нормального, приятно цвета:
    b.radikal.ru/b21/1802/dc/d4167288703a.png
    0
  22. foto
    Гость 25 февраля 2018 12:54 #
    Цитата: Sander
    Формируемая модулем верстка вполне позволяет использовать стиль указанный по вашей ссылке.
    Но нужны хотя бы начальные знания в css и html.

    Ладно, это не столь важно. Как сделать ссылки speedbar такого же цвета, как и у вас? У меня они как видите синие, страшные.
    0
    1. foto
      Администратор 25 февраля 2018 13:05 #
      Добавьте стиль:
      .speedbar li a{
          color: #0288d1;
      }

      И укажите свой желаемый цвет ссылок.
      0
  23. foto
    Гость 25 февраля 2018 13:33 #
    Цитата: Sander
    Добавьте стиль:
    .speedbar li a{
        color: #0288d1;
    }

    И укажите свой желаемый цвет ссылок.

    Спасибо, а как сделать, чтобы ссылка при наведении курсора становилась красной, как и у вас?
    И есть еще одна проблема, я тайтл новости убрал (заменил ($titl_e) на ($titl_e AND !$news_found) (так, как вы указали)), но тогда получается, что при просмотре новости в крошках нет ссылки на категорию, в которой новость находится, т.е само название категории есть, а ссылки на нее нет:
    b.radikal.ru/b14/1802/66/5b447ad18bb8.png
    0
  24. foto
    Гость 25 февраля 2018 16:50 #
    Цитата: noname
    Цитата: Sander
    Добавьте стиль:
    .speedbar li a{
        color: #0288d1;
    }

    И укажите свой желаемый цвет ссылок.

    Спасибо, а как сделать, чтобы ссылка при наведении курсора становилась красной, как и у вас?
    И есть еще одна проблема, я тайтл новости убрал (заменил ($titl_e) на ($titl_e AND !$news_found) (так, как вы указали)), но тогда получается, что при просмотре новости в крошках нет ссылки на категорию, в которой новость находится, т.е само название категории есть, а ссылки на нее нет:
    b.radikal.ru/b14/1802/66/5b447ad18bb8.png

    С цветом при наведении курсора разобрался почти сразу, а вот со вторым не могу. Странно, что никто не обратил на это внимание.
    0
    1. foto
      Администратор 26 февраля 2018 19:54 #
      Строку:
      if ($titl_e) {

      Заменить на:
      if ($titl_e && $dle_module != 'showfull') {


      Строки:
          $last_item = array_pop($speedbar);
          $speedbar[] = is_array($last_item) ? $last_item[1] : $last_item;

      Заменить на:
      if ($dle_module != 'showfull') {
          $last_item = array_pop($speedbar);
          $speedbar[] = is_array($last_item) ? $last_item[1] : $last_item;
      }
      0
  25. foto
    Гость 26 февраля 2018 23:41 #
    Цитата: Sander
    Строку:
    if ($titl_e) {

    Заменить на:
    if ($titl_e && $dle_module != 'showfull') {


    Строки:
        $last_item = array_pop($speedbar);
        $speedbar[] = is_array($last_item) ? $last_item[1] : $last_item;

    Заменить на:
    if ($dle_module != 'showfull') {
        $last_item = array_pop($speedbar);
        $speedbar[] = is_array($last_item) ? $last_item[1] : $last_item;
    }

    Спасибо, очень помогли.
    0
  26. foto
    Гость 23 марта 2018 17:26 #
    Подскажите пожалуйста, как сделать что бы кликабельной была только последняя ссылка (ссылка на саму новость в которой стоит код), просто у меня гугл сейчас вот в таком виде выводит крошки: sait.com › sait.com › категория, а хочу что бы так было: sait.com › название статьи. Спасибо!
    0
    1. foto
      Администратор 23 марта 2018 18:06 #
      Вероятнее всего у вас что-то сделано неправильно.
      site.com два раза никак не должен выводиться. Проверьте, возможно он у вас прописан физически в самом шаблоне speedbar.tpl
      0
  27. foto
    Гость 23 марта 2018 18:28 #
    Не отображается у вас защитный код, поэтому пиши в новой ветке. Скррин - http://i3.imageban.ru/out/2018/03/23/bf918f2537b988c223cd4359deb5ae60.png

    В speedbar.tpl есть только такой код: speedbar. Вот такой исходный код страницы, где sait.com › sait.com › категория:

    <div id="dle-speedbar"><p><ul itemscope itemtype="http://schema.org/BreadcrumbList" class="speedbar"><li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a itemscope itemtype="http://schema.org/Thing" itemprop="item" href="http://мойсайт.com/" title=""><span itemprop="name">мойсайт.com</span></a><meta itemprop="position" content="1" /></li><li class="speedbar_sep">»</li><li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a itemscope itemtype="http://schema.org/Thing" itemprop="item" href="http://мойсайт/ссылка на категорию/" title=""><span itemprop="name">Название категории</span></a><meta itemprop="position" content="2" /></li><li class="speedbar_sep">»</li><li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">Название статьи</span><meta itemprop="position" content="3" /></li></ul></p></div>
    0
  28. foto
    Гость 25 марта 2018 12:07 #
    Sander не подскажите почему так гугл выводит крошки, это очень плохо смотрится. Ошибки в исходном коде нет? Я делал все по инструкции.
    0
    1. foto
      Администратор 25 марта 2018 14:40 #
      Без адреса сайта ничем не могу помочь. Нужно лично смотреть.
      0
  29. foto
    Гость 26 марта 2018 20:33 #
    Цитата: Sander
    Без адреса сайта ничем не могу помочь. Нужно лично смотреть.

    Адрес сайта предоставил, можете пожалуйста посмотреть есть-ли ошибка в коде? Или это гугл тупит!?
    0
    1. foto
      Администратор 27 марта 2018 19:56 #
      Согласно инструменту проверки структурированности данных - ошибок нету.
      https://search.google.com/structured-data/testing-tool
      Единственное, что мне не нравится, то что не отображаются ссылки.
      Да и просто категория первого уровня не отображается как ссылка в результатах поиска, что как бы тоже не совсем правильно.
      Чуть позже как будет свободное время проверю и потестирую более подробно.
      0
  30. foto
    Гость 3 апреля 2018 19:07 #
    Здравствуйте Sander, помогите хотя бы удалить название сайта в ссылке в футере, я думаю это поможет.

    Чтобы выглядело не так как сейчас: название сайта » категория » подкатегория, а в от так: категория » подкатегория! Пожалуйста)
    0
    1. foto
      Администратор 3 апреля 2018 19:09 #
      Строку:
      $speedbar = array( array( $config['http_home_url'], $config['short_title'], $config['home_title'] ) );

      Заменить на:
      $speedbar = array();

      Но я уверен, что дело не в этом. Даже не представляю как поисковик воспримет подобный спидбар...
      0
  31. foto
    Гость 3 апреля 2018 19:14 #
    Большое спасибо! Гугл кажет, что код валидный.
    0
  32. foto
    Гость 2 мая 2018 15:58 #
    Валидатор микроразметки от Яндекса для странички с этой новостью выдаёт ошибки.
    ОШИБКА: невозможно определить принадлежность данных полей. Возможны две причины: эти поля некорректно размещены, либо указан лишний атрибут itemprop
    ОШИБКА: Не выполнено обязательное условие для продуктовых сниппетов: поле offers отсутствует или пусто
    Это так и должно быть?
    0
    1. foto
      Администратор 2 мая 2018 21:16 #
      Я ориентировался на спецификацию гугла и schema.org
      Угодить яндексу у меня не получилось, хоть я и не старался особо.
      0
      1. foto
        Гость 16 мая 2018 16:23 #
        Если будет возможность - просьба подправить и под Яндекс. Хотя сам им и не пользуюсь, но в русскоязычной среде (а DLE распространён в основном в рунете) Яндекс - довольно популярный ресурс.
        0
        1. foto
          Администратор 16 мая 2018 16:30 #
          Предлагаю вам принять участие.
          Гугл предоставляет пример и спецификацию по оформлению хлебных крошек:
          https://developers.google.com/search/docs/data-types/breadcrumb

          У яндекса я нашел только тему:
          https://yandex.ru/blog/search/pravilnaya-mikrorazmetka-khlebnykh-kroshek-na-sayte-s-pomoschyu-schema-org

          Если найдете у них документацию - попробуйте совместить их и добиться правильной работы в обоих валидаторах.
          0
          1. foto
            Гость 17 мая 2018 02:02 #
            Одна из ошибок в валидаторе яндекса -
            поле http://ogp.me/ns#image отсутствует или пусто

            (в случае, если в новости вообще нет картинок).
            Можно использовать в таком случае картинку-заглушку (с логотипом сайта, к примеру), добавив meta property:
            www.blogovoe.ru/blog/ispravlyaem_oshibka_pole_httpogpmensimage.html
            Но вот как модифицировать ваш модуль, чтобы эта заглушка использовалась только в том случае, когда в новости отсутствует своя собственная картинка?
            0
            1. foto
              Администратор 17 мая 2018 13:31 #
              Никак. Вышеуказанная тема не имеет никакого отношения к микроразметке именно хлебных крошек.
              Там микроразметка полной новости.
              0
  33. foto
    Посетитель 21 июня 2018 17:33 #
    у меня при поиске в гугле , название сайта два раза отображается
    на самом сайте все правильно отображается
    0
  34. foto
    VIP 12 августа 2018 09:24 #
    У меня яндекс начал выдавать в хлебных крошках пагинацию и поиск.
    Выглядит так: Видео Модели Гифки Фото Поиск по сайту Загрузить еще
    В гугле нету. Там все нормально. Код пагинации в noindex.
    0
    1. foto
      Администратор 12 августа 2018 10:17 #
      Яндекс не поддерживает микроразметку.
      У них этот "спидбар" / "хлебные крошки" называется Навигационная цепочка
      Формируется навигационная цепочка автоматически.
      Т.е. нет возможности "подсказать" поисковику свою структуру сайта. Он сам на свое усмотрение все решает.


      Цитата: romanov
      Выглядит так: Видео Модели Гифки Фото Поиск по сайту Загрузить еще

      Это поисковик решил, что нет навигации и показывает быстрые ссылки, которые опять же он определил автоматически.
      0
      1. foto
        VIP 12 августа 2018 11:05 #
        Да, я понял из комментов выше, что у яндекса своя схема ... Просто свой случай написал. Месяца три назад Яндекс нормально выводил хлебные крошки, примерно полгода. Категории или новости, а сейчас вот добавил Поиск по сайту и Загрузить ещё. И раньше выводил в два столбика, а сейчас мелким шрифтом в один ряд. Я правильно понимаю, что хлебные крошки строятся на действиях на сайте? Типа на сайте часто используют Загрузить еще и Поиск по сайту?
        0
        1. foto
          Администратор 12 августа 2018 11:09 #
          Теоретически может быть. Но только в том случае, если на сайте установлена яндекс метрика. Или в теории если у пользователей яндекс браузер (но это маловероятно).
          А так - не знаю по каким алгоритмам вообще у них там что работает.
          Как вариант возможно анализируют какие ссылки не меняются на странице и просто выводят первые N-ссылок.
          +1
  35. foto
    Гость 4 сентября 2018 19:00 #
    Проверяю структурные данные и выдает ошибку в твоих крошках: "Необходимо указать значение для поля item". У себя такого не наблюдаешь?
    0
    1. foto
      Администратор 4 сентября 2018 19:06 #
      В данный момент я провожу эксперимент с этими крошками на своем сайте.
      Вариант с RDFa - да, выдает ошибку. Простая микроразметка ошибок не выдает.
      Жду когда гугл обновит данные в результатах выдачи. После этого обновлю код в статье.
      0
      1. foto
        Гость 19 сентября 2018 05:55 #
        Обычная микроразметка так же выдает
        item
        Необходимо указать значение для поля item.
        0
  36. foto
    Гость 12 сентября 2018 00:20 #
    Для последней (некликабельной крошки) ошибка Необходимо указать значение для поля item.
    0
  37. foto
    Гость 21 сентября 2018 17:13 #
    Здравствуйте, большое спасибо за проделанную работу, на данный момент валидатор показывает ошибку, item.
    Как это исправить?
    0
    1. foto
      Администратор 21 сентября 2018 18:56 #
      Я в курсе об ошибке с item.
      Все еще провожу эксперименты с гуглом. Доэкспериментировался, что теперь в результатах выдачи у меня крошки перестали отображаться.
      Сейчас жду очередного обновления, хочу убедиться чтобы выложить уже наверняка 100% правильно рабочий вариант.
      0
      1. foto
        Гость 27 сентября 2018 01:34 #
        Понятно, спасибо, вы это как то объявите? В новости укажете актуальную дату? или в комментах отпишитесь, что вышла новая версия кода? Поднимите новость на верх?
        0
Добавить комментарий
  • Логин
  • E-mail (не обязательно)
Повторите рисунок:
antibot
© Sander-Development. 2009-2018.
При копировании, ссылка на источник обязательна.