Модуль «Кимет: Умный фильтр - SEO - Заголовки, мета-теги, карта сайта» является расширением стандартного компонента 1С-Битрикс «Умный фильтр». Стандартный фильтр, несмотря на свою отличную работу, имеет один недостаток – для выборок товаров нельзя задавать отдельные заголовки, мета-теги и SEO текст, также нельзя определенные выборки включать в карту сайта.
Данный модуль устраняет данный недочет, позволяя SEO специалисту создавать большое количество органических страниц по низкочастотным и среднечастотным ключевым словам.
Преимущества модуляПри редактировании сгенерированных правил, этот чекбокс можно устанавливать, если требуется повторная генерация отдельных правил.
При генерации модуль создаст все возможные наборы значений этих свойств, для которых в выборке будет хотя бы один товар.
Жмем кнопку «Сохранить».
Генерация структуры фильтра
Нажимаем кнопку «Генерировать».
И переходим непосредственно к процессу генерации фильтра.
Выбираем нужный нам фильтр, ограничение шага генерации в секундах.
Если нам требуется полная перегенерация фильтра независимо от чекбоксов в правилах фильтра, выбираем чекбокс «Полная генерация».
Если мы хотим использовать выборки в Sitemap, то ставим чекбокс «Генерация элементов (для карты сайта)». Будут сгенерированы дополнительно элементы в каждом разделе, которые можно будет использовать для карты сайта.
Проверяем правильность путей в инфоблоке Фильтра и устанавливаем доступ для каких пользователей долженНастройка комплексного компонента каталога
В начало шаблона вывода раздела каталога комплексного компонента вставляем код (файлы section.php, section_vertical.php или section_horizontal.php), который отвечает за переопределение переменных:
if(Loader::includeModule('kimet.seofilter')) { CKimetSeoFilter::RedefineComponentVariables($arParams["IBLOCK_ID"], $arResult["VARIABLES"]); $arCurSection['ID'] = $arResult["VARIABLES"]["SECTION_ID"]; } |
В комплексном компоненте каталога меняем область видимости компонента с «bitrix» на «kimet.seofilter».
В конец шаблона вывода раздела каталога комплексного компонента вставляем код, который отвечает за установку заголовков, мета-тегов и текстовой SEO области.
if(Loader::includeModule('kimet.seofilter')) { if($hFilter = CKimetSeoFilter::InitByIBlockID($arParams["IBLOCK_ID"])) { $hFilterItem = $hFilter->FindSeoFilterItemByPath(($arResult["VARIABLES"]["SECTION_CODE_PATH"]?$arResult["VARIABLES"]["SECTION_CODE_PATH"]:$arResult["VARIABLES"]["SECTION_CODE"])."/".$arResult["VARIABLES"]["SMART_FILTER_PATH"]); if($hFilterItem) { if(strlen($hFilterItem->Get("DESCRIPTION"))) { echo '<div class="include-bottom">'.$hFilterItem->Get("DESCRIPTION").'</div>'; } $hFilterItem->initMetaData(); } } } |
Заполнение мета-тегов и заголовков ведется стандартным способом с помощью вкладки SEO во вновь созданном инфоблоке.
Также возможно заполнение информации в режиме «Правки сайта». Данный процесс показан в предлагающемуся видео.Для того чтобы выборки участвовали в sitemap при генерации фильтра необходимо установить чекбокс «Генерация элементов (для карты сайта)».
Генерация карты сайта осуществляется стандартными средствами 1С-Битрикс.
Кастомизация фильтра
Благодаря тому, что SEO фильтр генерируется с использованием инфоблоков, к нему применимы все события, которые можно использовать для инфоблоков.
Например, нам поставлена задача вывести минимальную цену выборки в заголовке браузера.
Пример события для добавления минимальной цены выборки в мета-теги:
if (\Bitrix\Main\Loader::includeModule('iblock') && \Bitrix\Main\Loader::includeModule('kimet.seofilter')) { \Bitrix\Main\EventManager::getInstance()->addEventHandler( "iblock", "OnAfterIBlockSectionAdd", "SetMinPriceFilterHandler" ); \Bitrix\Main\EventManager::getInstance()->addEventHandler( "iblock", "OnAfterIBlockSectionUpdate", "SetMinPriceFilterHandler" ); function SetMinPriceFilterHandler($arFields) { if ($arFields["IBLOCK_ID"] == "7") { $priceGroup = "1"; $sectionID = $arFields["ID"]; \Bitrix\Main\Loader::includeModule("catalog"); \Bitrix\Main\Loader::includeModule('currency'); if($hFilter = CKimetSeoFilter::InitByFilterIBlockID($arFields["IBLOCK_ID"])) { $hFilterItem = new CKimetSeoFilterItem($hFilter); if($hFilterItem->Init($sectionID) && $hFilterItem->IsValue()) { $arCatalogSection = $hFilterItem->GetCatalogSection(); $elementSection = new Bitrix\Main\Entity\Query('\Bitrix\Iblock\SectionElementTable'); $arFilter = array('IBLOCK_ID' => $arCatalogSection['IBLOCK_ID'], 'ACTIVE' => 'Y', 'SECTION_ID' => $arCatalogSection["ID"], "INCLUDE_SUBSECTIONS" => "Y"); $arPropertyValues = $hFilterItem->PropertyValues(); foreach($arPropertyValues as $iPID => $sValue) $arFilter["PROPERTY_".$iPID] = $sValue; $rsElement = CIBlockElement::GetList(array(), $arFilter, false, false, array('ID')); while ($arElement = $rsElement->Fetch()) $arElementsID[] = $arElement['ID']; $arItem = \Bitrix\Iblock\ElementTable::getList( [ 'filter' => ['=ID' => $arElementsID], 'order' => ['PriceTable.PRICE_SCALE' => 'asc'], 'select' => [ 'PriceTable.PRICE_SCALE', ], 'limit' => 1, 'runtime' => [ new \Bitrix\Main\Entity\ReferenceField( 'PriceTable', \Bitrix\Catalog\PriceTable::class, ['=this.ID' => 'ref.PRODUCT_ID', $priceGroup => 'ref.CATALOG_GROUP_ID'], ['join_type' => 'RIGHT'] ) ] ] )->fetchRaw(); if (!empty($arItem)) { $minPriceSection = \CCurrencyLang::CurrencyFormat(reset($arItem), \Bitrix\Currency\CurrencyManager::getBaseCurrency()); } $GLOBALS["USER_FIELD_MANAGER"]->Update("IBLOCK_".$arFields["IBLOCK_ID"]."_SECTION", $arFields["ID"], array("UF_MIN_PRICE" => $minPriceSection)); return $minPriceSection; } } } } } |
Пример, шаблона для заголовка браузера:
Купить обувь из искусственных материалов по цене {=this.property.min_price} |