Пример разметки хлебных крошек по schema.org
<ul itemscope itemtype="https://schema.org/BreadcrumbList">
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href="/" title="Главная" itemprop="item">
<span itemprop="name">Главная</span>
<meta itemprop="position" content="0">
</a>
</li>
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href="/section/" title="Раздел" itemprop="item">
<span itemprop="name">Раздел</span>
<meta itemprop="position" content="1">
</a>
</li>
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a href="/section/page/" title="Страница" itemprop="item">
<span itemprop="name">Страница</span>
<meta itemprop="position" content="2">
</a>
</li>
</ul>
itemscope - указывает, что на странице описывается определенный объект.
itemtype - указывает тип объекта.
itemtype="https://schema.org/BreadcrumbList" - указывает тип, хлебные крошки.
itemprop="itemListElement" - указывает на отдельный пункту хлебных крошек.
itemprop="item" - ссылка пункта хлебных крошек.
itemprop="name" - название пункта хлебных крошек.
meta itemprop="position" content="number" - определяет позицию пункта хлебных крошек.
Пример результата после внедрения микроразметки хлебных крошек

Добавляем микроразметка хлебных крошек в Yii2
Создаем новый виджет хлебных крошек
Создадим класс MyBreadcrumbs.php (@app/widgets/MyBreadcrumbs.php), который будет наследовать базовый класс хлебных крошек Breadcrumbs, со следующим кодом:
<?php
namespace app\widgets;
use Yii;
use yii\base\InvalidConfigException;
use yii\bootstrap4\Breadcrumbs;
use yii\bootstrap4\Html;
use yii\helpers\ArrayHelper;
class MyBreadcrumbs extends Breadcrumbs {
public $itemTemplate = "<li class=\"breadcrumb-item\" itemprop=\"itemListElement\" itemscope itemtype=\"https://schema.org/ListItem\">{link}</li>\n";
public $activeItemTemplate = "<li class=\"breadcrumb-item active\" aria-current=\"page\" itemprop=\"itemListElement\" itemscope itemtype=\"https://schema.org/ListItem\">{link}</li>\n";
public function run() {
$this->registerPlugin('breadcrumb');
if (empty($this->links)) {
return '';
}
$links = [];
$position = 0;
if ($this->homeLink === null) {
$links[] = $this->renderItem([
'label' => Yii::t('yii', 'Home'),
'url' => Yii::$app->homeUrl,
'position' => $position,
], $this->itemTemplate);
} else if ($this->homeLink !== false) {
$links[] = $this->renderItem($this->homeLink, $this->itemTemplate);
}
foreach ($this->links as $link) {
$position++;
if (!is_array($link)) {
$link = ['label' => $link, 'position' => $position,];
} else {
$link += ['position' => $position];
}
$links[] = $this->renderItem($link, isset($link['url']) ? $this->itemTemplate : $this->activeItemTemplate);
}
return Html::tag('nav', Html::tag($this->tag, implode('', $links), $this->options), $this->navOptions);
}
protected function renderItem($link, $template) {
$encodeLabel = ArrayHelper::remove($link, 'encode', $this->encodeLabels);
if (array_key_exists('label', $link)) {
$label = $encodeLabel ? Html::encode($link['label']) : $link['label'];
} else {
throw new InvalidConfigException('The "label" element is required for each link.');
}
if (isset($link['template'])) {
$template = $link['template'];
}
if (isset($link['position'])) {
$position = $link['position'];
} else {
$position = 0;
}
if (isset($link['url'])) {
$options = $link;
$options += ['itemprop' => 'item'];
unset($options['template'], $options['label'], $options['url'], $options['position']);
$link = Html::a('<span itemprop="name">' . $label. '</span>', $link['url'], $options);
$link .= '<meta itemprop="position" content="' . $position . '">';
} else {
$link = Html::a('<span itemprop="name">' . $label . '</span>', Yii::$app->request->url, ['style' => 'display: none;']);
$link .= '<meta itemprop="position" content="' . $position . '">';
$link .= $label;
}
return strtr($template, ['{link}' => $link]);
}
}
Вызываем виджет хлебных крошек с микроразметкой в Yii2
Теперь в месте где вызывается стандартный виджет хлебных крошек Breadcrumbs (обычно это: @app/views/layouts/main.php) заменяем вызов стандартного виджета на наш:
<?php
echo \app\widgets\MyBreadcrumbs::widget([
'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
]);
?>
Заполняем массив хлебных крошек
В контроллере массив с хлебными крошками заполняется как и раньше:
<?php
$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Раздел'), 'url' => ['/section']];
$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Страница'), 'url' => ['/section/page']];
$this->params['breadcrumbs'][] = $this->title;
Как проверить микроразметку на сайте?
Проверить правильность микроразметки на сайте можно с помощью инструмента от google:
devreadwrite.com



Подборка адаптивных шаблонов для вашей CMS
Статьи по
Как получить и установить HTTPS сертификат на сайта

Комментарии
Комментарии отсутствуют, Вы можете быть первым