Ко мне поступила следующая задача: узнать сколько было заказов из раздела "Холодильники" на сайте бытовой техники. Так как сайт на битриксе, то было принято решать эту задачу при помощи документации этой cms. Я создал файл "zakaz_holod.php" и внес в него следующий код:
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); ?> <? CModule::IncludeModule("sale"); CModule::IncludeModule("catalog"); $arFilter = Array( ">=ORDER_ID" => "1","<=ORDER_ID" => "5276" ); $db_sales = CSaleBasket::GetList(array("DATE_INSERT" => "ASC"), $arFilter); while ($ar_sales = $db_sales->Fetch()) { $id_tovara = CCatalogSku::GetProductInfo($ar_sales["PRODUCT_ID"]); $id_razdela = CIBlockElement::GetByID($id_tovara["ID"]); if($id_razdela1 = $id_razdela->GetNext()){ if($id_razdela1["IBLOCK_SECTION_ID"] == 5){ $x++; } } } echo $x; ?>
Вначале мы подключаем модули "slae" и "catalog" затем в фильтре указываем, что нам нужны товары с первого по последний, в моем случае последний товар под id 5276 Затем получаем записи из корзины CSaleBasket::GetList. Далее в результате этих записей надо по id торгового предложения получить id товара CCatalogSku::GetProductInfo. А получив id товара можно узнать айди раздела CIBlockElement::GetByID. У раздела "Холодильники" id равен 5, значит делаем проверку if($id_razdela1["IBLOCK_SECTION_ID"] == 5), если равен 5, то считаем заказы.
У этой задачи есть и второй вариант решения, но он работает, если у вас правильно настроены ЧПУ.
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); ?> <? CModule::IncludeModule("sale"); $arFilter = Array( ">=ORDER_ID" => "1","<=ORDER_ID" => "5276", "%DETAIL_PAGE_URL" => "/catalog/holodilnik/" ); $db_sales = CSaleBasket::GetList(array("DATE_INSERT" => "ASC"), $arFilter); while ($ar_sales = $db_sales->Fetch()) { $x++; } echo $x; ?>
Мы указываем в фильтре, что нам нужны все заказы, у которых в товарах детальная страничка начинается с адреса /catalog/holodilnik/ т.е. все товары из раздела "holodilnik".
Несмотря на то, что второй вариант короче и страница zakaz_holod.php будет грузиться быстрей, мне все же нравится первый вариант, который я и вам рекомендую.