Добавление СЕО-тегов в 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' произойдет перезапись предыдущих данных.