Магазин на Yii2, часть 9. Добавляем мета-теги keywords и description
12.05.2019
Теги: SEO • Web-разработка • Yii2 • ИнтернетМагазин • КаталогТоваров • МетаТеги • Практика • Фреймворк
Давайте немного подумаем о SEO-оптимизации и установим для страниц нашего сайта мета-теги. Мета-теги влияют на то, как отображатся и какую позицию занимает страница сайта в поисковой выдаче Yandex и Google. При прочих равных условиях поисковики отдают предпочтение сайту с грамотно сформированными мета-тегами.
В базе данных для таблиц category
и product
у нас есть поля keywords
и description
. Эти поля будут заполняться при добавлении новых разделов и товаров. На случай, если это поля будут не заполнены, предусмотрим некоторое значения по умолчанию. Для этого открываем на редактирование файл config/params.php
:
<?php return [ 'adminEmail' => 'admin@example.com', 'senderEmail' => 'noreply@example.com', 'senderName' => 'Example.com mailer', /* * Название магазина, например «Lamoda» или «WildBerries» */ 'shopName' => 'Магазин одежды и обуви', /* * Значения по умолчанию для мета-тегов title, keywords и description */ 'defaultTitle' => 'Интернет-магазин модной одежды и обуви', 'defaultKeywords' => 'одежда, обувь, мужская, женская, детская, зимняя, летняя', 'defaultDescription' => 'Коллекции женской, мужской, детской одежды и обуви', ];
Поскольку мета-теги нужно устанавливать для всех страниц сайта, добавим метод в общий контроллер AppController
:
<?php namespace app\controllers; use yii\web\Controller; use Yii; class AppController extends Controller { /** * Метод устанавливает мета-теги для страницы сайта * @param string $title * @param string $keywords * @param string $description */ protected function setMetaTags($title = '', $keywords = '', $description = '') { $this->view->title = $title ?: Yii::$app->params['defaultTitle']; $this->view->registerMetaTag([ 'name' => 'keywords', 'content' => $keywords ?: Yii::$app->params['defaultKeywords'] ]); $this->view->registerMetaTag([ 'name' => 'description', 'content' => $description ?: Yii::$app->params['defaultDescription'] ]); } }
Добавим вызов этого метода в контроллеры PageController
и CategoryController
:
<?php namespace app\controllers; use app\models\Product; use Yii; class PageController extends AppController { /* * Главная страница сайта */ public function actionIndex() { // получаем лидеров продаж $hitProducts = Product::find()->where(['hit' => 1])->limit(3)->asArray()->all(); // получаем новые товары $newProducts = Product::find()->where(['new' => 1])->limit(3)->asArray()->all(); // получаем товары распродажи $saleProducts = Product::find()->where(['sale' => 1])->limit(3)->asArray()->all(); // устанавливаем мета-теги для страницы $this->setMetaTags(); return $this->render( 'index', compact('hitProducts', 'newProducts', 'saleProducts') ); } }
<?php namespace app\controllers; use app\models\Category; use app\models\Product; use Yii; class CatalogController extends AppController { public function actionCategory($id) { $id = (int)$id; $temp = new Category(); // товары категории $products = $temp->getCategoryProducts($id); // данные о категории $category = $temp->getCategory($id); // устанавливаем мета-теги для страницы $this->setMetaTags( $category->name . ' | ' . Yii::$app->params['shopName'], $category->keywords, $category->description ); return $this->render('category', compact('category', 'products')); } }
Удаляем из view-шаблонов views/page/index.php
и views/catalog/category.php
код, отвечающий за установку заголовка страницы:
$this->title = 'Интернет-магазин';
$this->title = $category['name'];
Теперь установка заголовка страницы и мета-тегов у нас централизована, а не размазана по всем шаблонам.
- Магазин на Yii2, часть 35. Админка: загрузка картинок для страниц и страница 404
- Магазин на Yii2, часть 34. Показываем меню страниц в публичной части
- Магазин на Yii2, часть 33. Админка: приводим в порядок CRUD-код для страниц
- Магазин на Yii2, часть 32. Админка: удаление категорий и CRUD для страниц
- Магазин на Yii2, часть 31. Админка: загрузка изображений для категорий и брендов
- Магазин на Yii2, часть 30. Админка: WYSIWYG-редактор и изображение для товара
- Магазин на Yii2, часть 29. Админка: добавляем список товаров категории
Поиск: SEO • Web-разработка • Yii2 • Интернет магазин • Каталог товаров • Фреймворк • Мета теги