Всем привет.

Недавно у меня возникла необходимость выводить на клиентском сайте, на странице раздела каталога количество активных элементов.

Сперва я пробовал стандартный CIBlockSection::GetList, но он возвращал количество всех элементов, а мне надо было получить количество только активных.
После некоторых ковыряний в хелпах по bitrix api решение было найдено.

Чтобы получить количество активных элементов в разделе каталога надо использовать следующий код.

$sect = CIBlockSection::GetList(
	Array("sort"=>"asc", 'name'=>'asc'), 
	Array(
		'IBLOCK_ID'=>3, 
		'ID'=>$arResult['ID'],
		'GLOBAL_ACTIVE'=>"Y",
		'CNT_ACTIVE'=>true
	), 
	true, 
	array('NAME')
);
while($el = $sect->Fetch()):
	$count += $el["ELEMENT_CNT"];
endwhile;
echo 'Товаров: '.$count;

Именно благодаря параметру ‘CNT_ACTIVE’=>true мы получаем количество только активных элементов каталога.
Еще маленькая хитрость, если для фильтрации использовать ID, а не SECTION_ID то мы избежим пропадания количества во вложенных подразделах.

Bitrix — количество активных элементов в разделе каталога
Метки:         

11 комментариев к “Bitrix — количество активных элементов в разделе каталога

    • 07.12.2013 в 17:58
      Постоянная ссылка

      В свойство arFilter надо добавить фильтрацию по нужному вам свойству, например, ‘PROPERTY_BRAND’ => ‘NameBrand’

      Ответ
  • 09.12.2013 в 07:36
    Постоянная ссылка

    Что то не то,
    $Nel=2;
    $sect = CIBlockSection::GetList(
    Array(«sort»=>»asc», ‘name’=>’asc’),
    Array(
    ‘IBLOCK_ID’=>$arResult[‘IBLOCK_ID’],
    ‘ID’=>$arResult[«SECTIONS»][$a][«ID»],
    ‘GLOBAL_ACTIVE’=>»Y»,
    ‘PROPERTY_Nel’=>$Nel,
    ‘CNT_ACTIVE’=>true
    ),
    true,
    array(‘NAME’)
    );
    Тип поля — число.

    Ответ
  • 09.12.2013 в 07:39
    Постоянная ссылка

    Количество активных элементов считает правильно, но вот на свойство как будто нет его

    Ответ
  • 11.12.2013 в 14:23
    Постоянная ссылка

    Было бы совсем круто если бы еще можно было учитывать в фильтре количество на складе >=1

    Ответ
    • 19.05.2017 в 18:25
      Постоянная ссылка

      Да, способ тормозной, можете посоветовать более быстрый и правильный способ?

      Ответ
  • 01.07.2020 в 22:18
    Постоянная ссылка

    $activeElements = CIBlockSection::GetSectionElementsCount( $SECTION_ID, Array(«CNT_ACTIVE»=>»Y»));
    echo $activeElements;
    Ровно тоже, что и код в теме)

    Ответ

Добавить комментарий для Максим Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

90% сайтов рунета содержат уязвимости и могут быть взломаны! Проверь свой сайт!