Как задать meta-теги для умного фильтра в 1С-Битрикс
Блог

Как задать meta-теги для умного фильтра в 1С-Битрикс

10 сентября, 2019

blog__single

Смарт-фильтры в 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 и текста.

Оставить заявку: