Задача: на странице с результатами поиска по каталогу нужно установить уникальные метатеги: keywords, description, canonical и заголовок страницы.
Зачем нужны метатеги в результатах поиска
Возникла такая ситуация на одном из сайтов: каким-то образом страницы с результатами поиска попали в индекс Яндекса, и вебмастер начал оповещать о более чем 1000 страницах с одинаковыми метатегами.
Вряд ли Яндекс сам заполнял инпут с поиском и переходил на результаты. Предположений, как эти страницы попали в индекс, всего два:
1) При посещении страницы данные о ней передались со счетчика Яндекс.Метрика
.
2) Данные о странице передались при посещении сайта через Яндекс.Браузер
.
Было решено сделать метатеги уникальными, передав в них поисковый запрос. Для этого открываем шаблон catalog.search и в template.php (в условие, когда результат поиска не пустой) добавляем код:
$request = \Bitrix\Main\Application::getInstance()->getContext()->getRequest();
$name = $request->get('q');
$dir = $APPLICATION->GetCurDir();
$APPLICATION->SetTitle(
'Результат поиска: '' . $name . '' по объявлениям'
);
$APPLICATION->SetPageProperty(
'title',
'Поиск ' . $name . ' результат'
);
$APPLICATION->SetPageProperty(
'keywords',
'найти, поиск по запискам, результат поиска ' . $name
);
$APPLICATION->SetPageProperty(
'description',
'Результат поиска по запросу ' . $name . ' в доске объявлений'
);
$APPLICATION->SetPageProperty(
'canonical',
'https://tech.bxstore.ru' . $dir . '?q=' . $name
);
- Получаем текущий запрос через Bitrix API и вытаскиваем значение параметра q — это поисковый запрос.
- Определяем текущий URL без домена.
- Устанавливаем заголовок страницы с включением поискового запроса.
- Добавляем метатег title, в котором указан результат поиска.
- Устанавливаем метатег keywords с поисковыми терминами.
- Задаем метатег description, описывающий результат поиска.
- Устанавливаем метатег canonical с каноническим URL, включающим поисковый запрос.
- Это делает метатеги уникальными для каждого поискового запроса, улучшая SEO.