Добавление СЕО-тегов в Yii2
Одним из таких шагов, рассмотренных в этой статье, является добавление и заполнение мета-тегов на страницах сайта. Заполненные мета-теги позволят улучшить вид сайта в поисковой выдаче, а так же к улучшению ранжирования.
Давайте рассмотрим, как в проекте на Yii2 добавить метаданные, связанные с СЕО.
Заполнение тега Title в Yii2
Для установки заголовка страницы Title достаточно добавить в экшен контроллера следующий код:
\Yii::$app->view->title = 'Заголовок страница';
Либо внутри вида:
this->title = 'Заголовок старницы';
Примечание: установка $this->title в виде переопределит значение, установленное в экшене контроллера.
Но лучшей практикой будет использование следующего варианта определения заголовка страницы:
this->title = $this->title ? $this->title : 'Заголовок по умолчанию';
Для версий PHP 7.0 и выше можно использовать такую конструкцию:
this->title = $this->title ?? 'Заголовок по умолчанию';
Заполнение мета-тегов Description и Keywords в Yii2
Для установки Description и Keywords нет специальных ключевых слов. Но так как они являются мета-тегами, то их можно установить при помощи метода registerMetaTag(). Для этого необходимо добавить следующий код (для экшена контроллера):
\Yii::$app->view->registerMetaTag([
'name' => 'description',
'content' => 'Мета описание',
]);
\Yii::$app->view->registerMetaTag([
'name' => 'keywords',
'content' => 'Мета ключевые слова',
]);
Либо следующий код в виде:
$this->registerMetaTag([
'name' => 'description',
'content' => 'Мета описание',
]);
$this->registerMetaTag([
'name' => 'keywords',
'content' => 'Мета ключевые слова',
]);
Все зарегистрированные мета-теги будут отображены внутри тегов <head></head>, которые заполняются при вызове $this->head().
Но здесь еще стоит обратить внимание на следующее: если вы зарегистрируете один и тот же тег дважды (создадите дубль его, например), то этот мета-тег два раза и будет отражен. Такая ситуация может возникнуть в том случае, когда мета-тег был зарегистрирован в экшене контроллера и в виде (представлении). Данная ситуация неблагоприятно сказывается на СЕО. И чтобы такого избежать, необходимо использовать дополнительный аргумент:
$this->registerMetaTag([
'name' => 'description',
'content' => 'Мета-описание 1',
], 'description');
$this->registerMetaTag([
'name' => 'description',
'content' => 'Мета-описание 2',
], 'description');
В примере выше при повторном вызове такого метода с повторяющимся вторым параметром 'description' произойдет перезапись предыдущих данных.