@pavelmosin

Рабочий вариант фильтрации всего каталога (bitrix:catalog.smart.filter в sections.php)?

Добрый день!
Задача такая: вывести в корне каталога все товары каталога с возможностью их фильтрации через bitrix:catalog.smart.filter.
Перепробовал все варианты из ТОП-запросов по вопросу, но ничего не работает, если ЧПУ включено.
  • Вопрос задан
  • 3024 просмотра
Решения вопроса 1
@pavelmosin Автор вопроса
В итоге сработал вот этот код фильтра + указать в параметрах catalog.section после фильтра
"BY_LINK"=> "Y",
"SHOW_ALL_WO_SECTION" => "Y",
"SECTION_ID" => '0',
<?
			$arFilter = array(
				"IBLOCK_ID" => $arParams["IBLOCK_ID"],
				"ACTIVE" => "Y",
				"GLOBAL_ACTIVE" => "Y",
			);
			if (0 < intval($arResult["VARIABLES"]["SECTION_ID"])) {
				$arFilter["ID"] = $arResult["VARIABLES"]["SECTION_ID"];
			}
			elseif ('' != $arResult["VARIABLES"]["SECTION_CODE"]) {
				$arFilter["=CODE"] = $arResult["VARIABLES"]["SECTION_CODE"];
			}

			$obCache = new CPHPCache();
			if ($obCache->InitCache(36000, serialize($arFilter), "/iblock/catalog")) {
				$arCurSection = $obCache->GetVars();
			} elseif ($obCache->StartDataCache()) {
				$arCurSection = array();
				if (Loader::includeModule("iblock")) {
					$dbRes = CIBlockSection::GetList(array(), $arFilter, false, array("ID"));

					if(defined("BX_COMP_MANAGED_CACHE")) {
						global $CACHE_MANAGER;
						$CACHE_MANAGER->StartTagCache("/iblock/catalog");

						if ($arCurSection = $dbRes->Fetch()) {
							$CACHE_MANAGER->RegisterTag("iblock_id_".$arParams["IBLOCK_ID"]);
						}
						$CACHE_MANAGER->EndTagCache();
					} else {
						if(!$arCurSection = $dbRes->Fetch()) {
							$arCurSection = array();
						}
					}
				}
				$obCache->EndDataCache($arCurSection);
			}
			if (!isset($arCurSection)) {
				$arCurSection = array();
			}



			$APPLICATION->IncludeComponent(
				"bitrix:catalog.smart.filter",
				".default",
				array(
					"PREFILTER_NAME" => $arParams["FILTER_NAME"],
					"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
					"IBLOCK_ID" => $arParams["IBLOCK_ID"],
					"SECTION_ID" => '0',
					"FILTER_NAME" => $arParams["FILTER_NAME"],
					"PRICE_CODE" => $arParams["PRICE_CODE"],
					"CACHE_TYPE" => $arParams["CACHE_TYPE"],
					"CACHE_TIME" => $arParams["CACHE_TIME"],
					"CACHE_GROUPS" => $arParams["CACHE_GROUPS"],
					"SAVE_IN_SESSION" => "N",
					"FILTER_VIEW_MODE" => $arParams["FILTER_VIEW_MODE"],
					"XML_EXPORT" => "Y",
					"SECTION_TITLE" => "NAME",
					"SECTION_DESCRIPTION" => "DESCRIPTION",
					'HIDE_NOT_AVAILABLE' => $arParams["HIDE_NOT_AVAILABLE"],
					"TEMPLATE_THEME" => $arParams["TEMPLATE_THEME"],
					'CONVERT_CURRENCY' => $arParams['CONVERT_CURRENCY'],
					'CURRENCY_ID' => $arParams['CURRENCY_ID'],
					"SEF_MODE" => $arParams["SEF_MODE"],
					"PAGER_PARAMS_NAME" => $arParams["PAGER_PARAMS_NAME"],
					"SEF_RULE" => '/catalog/filter/#SMART_FILTER_PATH#/apply/',
					"SMART_FILTER_PATH" => $arResult["VARIABLES"]["SMART_FILTER_PATH"],
					'SHOW_ALL_WO_SECTION'=>'Y',
				),
				$component,
				array('HIDE_ICONS' => 'Y')
			);
		?>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы