В новой записи я вам покажу как выводить количество активных элементов в разделе Bitrix. Данный код можно использовать при AJAX фильтрации умным фильтром.
Для того чтобы получить просто вывести количество элементов в разделе, вы можете воспользоваться следующим кодом, где в качестве первого параметра указываем ID раздела, а вторым параметром укажем параметры фильтрации.
$res = CIBlockSection::GetSectionElementsCount(
$sectId,
[
"CNT_ACTIVE"=>"Y"
]
);
Аналогичный вывод с использованием метода GetList
$arFilter = [
"IBLOCK_ID" => 4,
"SECTION_ID" => $arResult["SECTION"]["ID"],
"ACTIVE"=>"Y",
"INCLUDE_SUBSECTIONS" => 'Y'
];
$res = CIBlockElement::GetList(Array("SORT"=>"ASC"), $arFilter, Array("ID"));
if($count = $res->SelectedRowsCount()){
$activeElements = $count;
}
Для того чтобы использовать вывод результата при фильтрации умным фильтром, необходимо разместить данный код в шаблон компонента catalog.smart.filter и добавить в массив фильтрации $arFilter параметры от компонента умного фильтра.
Для этого я просто с помощью функции array_merge сливаю два массива с параметрами фильтрации.
Полный код для вывода количества элементов в умном фильтре.
$arFilter = [
"IBLOCK_ID" => 4,
"SECTION_ID" => $arResult["SECTION"]["ID"],
"ACTIVE"=>"Y",
"INCLUDE_SUBSECTIONS" => 'Y'
];
if($GLOBALS["arrFilter"]) {
$arFilter = array_merge($arFilter, $GLOBALS["arrFilter"]);
}
$res = CIBlockElement::GetList(
["SORT"=>"ASC"],
$arFilter,
["ID"]
);
if($count = $res->SelectedRowsCount()){
$activeElements = $count;
}