Есть несколько способов посчитать такое число, но какой же из способов покажет наиболее точную цифру? Давайте разбираться.
Выводим количество товаров раздела в Битриксе
Начнем с неправильного способа 🙂 .
Делается он при помощи устаревшего метода CIBlockSection::GetSectionElementsCount. Как он работает:
$activeElements = CIBlockSection::GetSectionElementsCount($arSection["ID"], Array("CNT_ACTIVE"=>"Y"));
Для большинства случаев такой код сгодится, даже несмотря на то что такой метод считается устаревшим в документации.
$arSection[“ID”] – ID нужного раздела, который нам необходимо передать для точного получения.
А не правильный он потому, что в большинстве случаев нам нужно не просто посчитать количество активных товаров, а еще и применить фильтр, у которых количество на складе больше 0.
Делается это при помощи GetList, притом не Section, а именно Element:
$activeElements = CIBlockElement::GetList ( Array("ID" => "ASC"), Array("SECTION_ID" => $arSection["ID"], "ACTIVE" => "Y", ">CATALOG_QUANTITY" => 0), array(), false, Array('ID') );
Помимо этого данный способ также хорош тем, что его проще масштабировать – вы легко можете добавить в него свои условия, и дописать в arFilter – PROPERTY_EXIST => ‘Y’ (ваше кастомное свойство тип список), или же >PROPERTY_ALL_COUNT => 0, которое, к примеру, отвечает за общее наличие по всем вашим торговым предложениям SKU.