Пример выборки заказов в интернет-магазине UMI.CMS

Пример выборки заказов в интернет-магазине UMI.CMS

Для примера выберем что-нибудь не сложное и не слишком примитивное. Пусть это будут заказы в магазине.

Будем выбирать заказы со статусом "Готово" (2759). Как получено это значение заморачиваться не будем, это отдельный вопрос.

$status = 2759;
 
 $curr_page = (int) getRequest('p');
 $per_page = 20;
 
 $hierarchyTypes = umiHierarchyTypesCollection::getInstance();
 $objectTypes = umiObjectTypesCollection::getInstance();
 
 //определяем ид иерархии по имени объекта
 //можно для упрощения подставить сюда ид напрямую, если он известен, но мы же тренируемся)
 $iHierarchyTypeId = $hierarchyTypes->getTypeByName("eshop", "order")->getId();
 
 //определяем ид типа объекта по ид иерархии
 $iObjectTypeId = $objectTypes->getTypeByHierarchyTypeId($iHierarchyTypeId);
 
 $sel = new umiSelection;
 $sel->addLimit($per_page, $curr_page);
 $sel->addObjectType($iObjectTypeId);//устанавливаем фильтр по типу объекта
 
 
 //определяем ид полей времени заказа(по нему будем упорядочивать) и статуса заказа
 $oObjectType = umiObjectTypesCollection::getInstance()->getType($iObjectTypeId);
 $iOrderTimeId = $oObjectType->getFieldId('order_time');
 $iStatus = $oObjectType->getFieldId('status');
 
 //теперь можем задать упорядочение и фильтр
 $sel->setOrderByProperty($iOrderTimeId, false);
 $sel->addPropertyFilterEqual($iStatus, $status);
 
 $res = umiSelectionsParser::runSelection($sel);
 $total = umiSelectionsParser::runSelectionCounts($sel);
 
 //выводим результат - массив ид объектов
 if($res){
 foreach($res as $id){
  echo $id.'
';
 
  }
 }

Если выбираем только страницы, то нужно принудительно указать UMI.CMS выбирать только элементы иерархии forceHierarchyTable(true);