Как узнать, сколько было сделано заказов из определенного раздела

Ко мне поступила следующая задача: узнать сколько было заказов из раздела "Холодильники" на сайте бытовой техники. Так как сайт на битриксе, то было принято решать эту задачу при помощи документации этой 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 будет грузиться быстрей, мне все же нравится первый вариант, который я и вам рекомендую.

Комменатрии
Добавить комментарий