• Как вывести только определенные елементы в bitrix:catalog?

    no_one_safe
    @no_one_safe
    "FILTER_NAME" => "arrFilter",

    UPD. НЕ заметил указанного этого параметра.
    Проблема в том, что компонент catalog.section не принимает глобальный фильтр [И в коде не работает с ним]. Да, такая беда.
    Варианта 2:
    1. Использовать для вывода catalog.top (Который учитывает этот фильтр)
    2. Допилить catalog.section. Перенести в свое пространство и на 466 строке
    $arFilter = array(
    		"IBLOCK_ID"=>$arParams["IBLOCK_ID"],
    		"IBLOCK_ACTIVE"=>"Y",
    		"ACTIVE"=>"Y",
    		"GLOBAL_ACTIVE"=>"Y",
    	);

    заменить на примерно
    if(strlen($arParams["FILTER_NAME"])<=0 || !preg_match("/^[A-Za-z_][A-Za-z01-9_]*$/", $arParams["FILTER_NAME"]))
    {
    	$arrFilter = array();
    }
    else
    {
    	$arrFilter = $GLOBALS[$arParams["FILTER_NAME"]];
    	if(!is_array($arrFilter))
    		$arrFilter = array();
    }
    $arFilter = array_merge(array(
    		"IBLOCK_ID"=>$arParams["IBLOCK_ID"],
    		"IBLOCK_ACTIVE"=>"Y",
    		"ACTIVE"=>"Y",
    		"GLOBAL_ACTIVE"=>"Y",
    	),$arrFilter);

    Конечно, при этом в $arParams в файле section.php в шаблоне компонента подать и имя фильтра, т.е.

    "FILTER_NAME" => $arParams['FILTER_NAME'],
    Ответ написан
    1 комментарий