Смарт-фильтры в 1С-Битрикс экономят массу времени программистов, но совсем не заботятся о СЕО-оптимизаторах. Дело в том, что отфильтрованные страницы как таковые редактировать довольно затруднительно, а следовательно, не всегда удается проставить все необходимые meta-теги для продвижения. Мы же нашли решение данной проблемы и делимся с вами.
Сначала разберем имеющиеся положения умного фильтра. Задав конкретные параметры поиска товаров, мы получим некоторую страницу. Товары будут отображаться исходя из заданных фильтров. Вопрос лишь в том, как будут формироваться title, description, h1 и keywords данной страницы? Все очень просто – они не изменятся. Естественно, для СЕО-оптимизации так не пойдет, поэтому необходимо каким-то образом настроить смену meta-тегов, исходя из заданных фильтров.
Meta-информация с помощью highload инфоблоков
Чтобы начать работать с meta-тегами отфильтрованных страниц необходимо создать highload инфоблок, содержащий всю необходимую информацию для поисковиков в виде следующих полей:
- UF_URL - для занесения url результата фильтрации в ЧПУ;
- UF_TITLE- для title;
- UF_DESCRIPTION - для description;
- UF_KEYWORDS - для keywords;
- UF_H1 - для H1.
Данные поля кастомные, поэтому добавлять можно сколько угодно. Например, если есть необходимость формировать уникальный текст для отфильтрованной страницы.
Чтобы все это заработало необходимо в файле component_epilog в шаблоне компонента catalog.section прописать следующее:
$arHLBlock = HighloadBlockTable::getList(array('filter' => array('TABLE_NAME' => $strIblockData)))->fetch();
$obEntity = HighloadBlockTable::compileEntity($arHLBlock);
$strEntityDataClass = $obEntity->getDataClass();
$arQuery = array();
$arQuery['filter'] = array( '=UF_URL' => trim($APPLICATION->GetCurPage(false)))
$dbData = $strEntityDataClass::getList($arQuery);
$arMeta = $dbData->fetch();
$APPLICATION->SetPageProperty('title', $arMeta['UF_TITLE']);
$APPLICATION->SetPageProperty(description, $arMeta['UF_DESCRIPTION']);
$APPLICATION->SetPageProperty(keywords, $arMeta['UF_KEYWORDS']);
$arResult[‘H1’] = $arMeta['H1'];
В результате, в самом разделе, а вернее в его шаблоне, останется только задать поля для H1 и текста.
https://s-webs.ru/blog/kak-zadat-meta-tegi-dlya-umnogo-filtra-v-1s-bitriks/