Уникальные мета теги для фильтра Bitrix

В шаблоне фильтра (bitrix:catalog.smart.filter) в файле result_modifier.php собираем активные фильтры.

$arResult['SET_FILTERS'] = [];
foreach ($arResult['ITEMS'] as $k => $arItem) {
    switch ($arItem['DISPLAY_TYPE']) {
        case 'A':
        case 'B':
            /** Пропустим числовые данные ползунки */
            break;
        default:
            foreach ($arItem['VALUES'] as $v) {
                /** Если фильтр активен, то запишем значение в массив */
                if ($v['CHECKED'] == 1) {
                    $arResult['SET_FILTERS'][] = $v['VALUE'];
                }
            }
    }
}

/** Добавим значение в кеш */
$cp = $this->__component;
if (is_object($cp)) {
    $cp->arResult['SET_FILTERS'] = $arResult['SET_FILTERS'];
    $cp->SetResultCacheKeys(
        [
            'SET_FILTERS'
        ]
    );
}

Данные мы собрали, теперь их нужно записать в глобальную переменную

В файле component_epilog.php всё того же шаблона, сделаем это

if (!empty($arResult['SET_FILTERS'])) {
    $APPLICATION->SetPageProperty('titleSuffix', implode(', ', $arResult['SET_FILTERS']));
}

Вывод данных

Выводим через OnEpilog в init.php

AddEventHandler("main", "OnEpilog", function()
{
    global $APPLICATION;

    $titleSuffix = $APPLICATION->GetPageProperty('titleSuffix');
    if (!empty($titleSuffix)) {
        $h1 = $APPLICATION->GetTitle();
        $newH1 = $h1 . ' ' . $titleSuffix;

        $APPLICATION->SetTitle($newH1);
        /** Добавим в хлебные крошки */
        $APPLICATION->AddChainItem($titleSuffix);

        foreach (['title', 'description', 'keywords'] as $prop) {
            $current = $APPLICATION->GetPageProperty($prop);
            $newValue = str_replace($h1, $newH1, $current);
            if ($current !== $newValue) {
                $APPLICATION->SetPageProperty($prop, $newValue);
            }
        }
    }
}
);

Источник: khozyaykin.ru

Оцените статью
Разработчик на bitrix и wordpress