Для того чтобы вывести два умных фильтра на одной странице каталога в системе 1C-Bitrix, вам нужно выполнить следующие шаги:
1. Подготовка каталога: Убедитесь, что у вас есть два умных фильтра, которые вы хотите вывести на странице каталога. Убедитесь также, что соответствующие свойства товаров настроены для фильтрации по этим фильтрам, и что ваши товары имеют значения этих свойств.
2. Создание шаблона страницы каталога: Откройте папку шаблонов вашего сайта в системе 1C-Bitrix, например, в папке "/bitrix/templates/Ваш_шаблон/". Создайте копию файла "catalog.section.php" и назовите его по своему усмотрению, например, "catalog.section.smartfilters.php". Откройте файл для редактирования.
3. Определение фильтров: В начале файла определите две переменные для фильтров, например, $SMART_FILTER_1 и $SMART_FILTER_2. Если вы знаете имена переменных кодов фильтров, вы можете использовать их, иначе вам придется определить их сами.
4. Получение фильтров: Найдите в коде файла функцию "CIBlockSection::GetList", которая используется для получения списка элементов каталога. В этой функции вам нужно добавить параметр "FILTER", в котором вы укажите фильтры для каждого умного фильтра. Например:
'FILTER' => array( 'PROPERTY_SMART_FILTER_1' => $SMART_FILTER_1, 'PROPERTY_SMART_FILTER_2' => $SMART_FILTER_2 )
5. Настройка вывода фильтров: В коде файла найдите функцию "CIBlockSection::GetFilterableProperties", которая используется для получения списка фильтруемых свойств. Измените эту функцию так, чтобы она возвращала только те свойства, которые вы хотите использовать в умных фильтрах. Например:
$arFilterableProperties = CIBlockSection::GetFilterableProperties($IBLOCK_ID, $SECTION_ID); $arFilterableProperties = array_filter($arFilterableProperties, function($property) { return $property['CODE'] == 'SMART_FILTER_1' || $property['CODE'] == 'SMART_FILTER_2'; });
6. Вывод фильтров: Для вывода фильтров вам нужно добавить нужный код в соответствующие места файла. Найдите места, где выводится блок фильтров, обычно это внутри "CBitrixCatalogSmartFilter", и добавьте два блока с фильтрами для каждого умного фильтра. Например:
CBitrixCatalogSmartFilter::Show($IBLOCK_ID, $arSmartFilter, 'SMART_FILTER_1', $arParams['FILTER_NAME']); CBitrixCatalogSmartFilter::Show($IBLOCK_ID, $arSmartFilter, 'SMART_FILTER_2', $arParams['FILTER_NAME']);
7. Настройка компонента: Наконец, настройте компонент "bitrix:catalog.section" на вашей странице каталога так, чтобы он использовал новый шаблон "catalog.section.smartfilters.php". Найдите код вызова компонента и добавьте параметр "TEMPLATE" со значением вашего файла шаблона. Например:
<?$APPLICATION->IncludeComponent( "bitrix:catalog.section", "", array( ... "TEMPLATE" => "catalog.section.smartfilters.php", ... ), false );?>
После выполнения этих шагов вы должны увидеть два умных фильтра на странице каталога и они должны работать независимо друг от друга. Обратите внимание, что вам может потребоваться настроить стили и расположение блоков с фильтрами в соответствии с вашими потребностями.