Хлебные крошки в 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
Источник: sandev.pro

Просмотров:

Добавить комментарий

Adblock
detector