Yii2. Добавление мета-тегов
Мета-теги — это html-теги, с помощью которых указываются дополнительные данные о странице сайта. Влияют на то, как отображается и какую позицию занимает страница в поисковой выдаче. При прочих равных условиях поисковики отдают предпочтение сайту с грамотно сформированными мета-тегами.
Установка мета-тегов через контроллер:
<?php namespace app\controllers; use Yii; use yii\web\Controller; class SiteController extends Controller { public function actionIndex() { return $this->render('index'); } public function actionHello() { $this->view->title = 'Заголовок страницы'; $this->view->registerMetaTag( ['name' => 'keywords', 'content' => 'Ключевые слова страницы'] ); $this->view->registerMetaTag( ['name' => 'description', 'content' => 'Краткое описание страницы'] ); return $this->render('hello'); } }
В layout-шаблон добавить вызов метода head()
:
<head> <meta charset="<?= Yii::$app->charset ?>"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title><?= Html::encode($this->title) ?></title> <?php $this->head() ?> </head>
В результате получим
<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Заголовок страницы</title> <meta name="keywords" content="Ключевые слова страницы"> <meta name="description" content="Краткое описание страницы"> <link href="/web/assets/ca646842/css/bootstrap.css" rel="stylesheet"> <link href="/web/css/site.css" rel="stylesheet"> </head>
Мета-теги можно зарегистрировать и в view-шаблоне:
<?php /* @var $this yii\web\View */ use yii\helpers\Html; $this->title = 'Заголовок страницы 2'; $this->registerMetaTag( ['name' => 'keywords', 'content' => 'Ключевые слова страницы 2'] ); $this->registerMetaTag( ['name' => 'description', 'content' => 'Краткое описание страницы 2'] ); ?> <div class="site-hello"> <h1><?= Html::encode($this->title) ?></h1> <p>Вы можете изменять эту страницу, редактируя файл шаблона:</p> <code><?= __FILE__ ?></code> </div>
Результат будет аналогичный:
<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Заголовок страницы 2</title> <meta name="keywords" content="Ключевые слова страницы 2"> <meta name="description" content="Краткое описание страницы 2"> <link href="/web/assets/ca646842/css/bootstrap.css" rel="stylesheet"> <link href="/web/css/site.css" rel="stylesheet"> </head>
$this->title
в шаблоне переопределит значение, установленное в контроллере.
Здесь стоит обратить внимание на следующее: если зарегистрировать один и тот же тег дважды, то этот мета-тег два раза и будет добавлен на страницу. Такая ситуация может возникнуть в том случае, когда мета-тег был зарегистрирован в контроллере и в шаблоне.
<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Заголовок страницы 2</title> <meta name="keywords" content="Ключевые слова страницы"> <meta name="description" content="Краткое описание страницы"> <meta name="keywords" content="Ключевые слова страницы 2"> <meta name="description" content="Краткое описание страницы 2"> <link href="/web/assets/ca646842/css/bootstrap.css" rel="stylesheet"> <link href="/web/css/site.css" rel="stylesheet"> </head>
Чтобы этого избежать, необходимо использовать дополнительный аргумент:
<?php namespace app\controllers; use Yii; use yii\web\Controller; class SiteController extends Controller { public function actionIndex() { return $this->render('index'); } public function actionHello() { $this->view->title = 'Заголовок страницы'; $this->view->registerMetaTag( ['name' => 'keywords', 'content' => 'Ключевые слова страницы'], 'keywords' ); $this->view->registerMetaTag( ['name' => 'description', 'content' => 'Краткое описание страницы'], 'description' ); return $this->render('hello'); } }
<?php /* @var $this yii\web\View */ use yii\helpers\Html; $this->title = 'Заголовок страницы 2'; $this->registerMetaTag( ['name' => 'keywords', 'content' => 'Ключевые слова страницы 2'], 'keywords' ); $this->registerMetaTag( ['name' => 'description', 'content' => 'Краткое описание страницы 2'], 'description' ); ?> <div class="site-hello"> <h1><?= Html::encode($this->title) ?></h1> <p>Вы можете изменять эту страницу, редактируя файл шаблона:</p> <code><?= __FILE__ ?></code> </div>
В этом случае произойдет перезапись предыдущих данных.
Поиск: HTML • PHP • SEO • Web-разработка • Yii2 • Фреймворк • Framework • Мета теги • MetaTags • Keywords • Description • Ключевые слова • Описание страницы • registerMetaTag