Пример выборки заказов в интернет-магазине 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);