Здравствуйте. Друзья, подскажите, как реализовать фильтрацию в админке Opencart 1.5 в списке "последние 10 заказов". Нужно вывести не все заказы, а только заказы со статусами "в ожидании"(Id 2) и "оплачено"(id 15). Догадываюсь, что за это отвечает файл /admin/model/sale/order.php
В файле admin/model/sale/order.php ( в методе getOrders ) найдите PHP: if (isset($data['filter_order_status_id']) && !is_null($data['filter_order_status_id'])) { $sql .= " WHERE o.order_status_id = '" . (int)$data['filter_order_status_id'] . "'"; } else { $sql .= " WHERE o.order_status_id > '0'"; } Замените на PHP: if (isset($data['filter_order_status_id']) && !is_null($data['filter_order_status_id'])) { $sql .= " WHERE "; if (is_array($data['filter_order_status_id'])) { $data['filter_order_status_id'] = array_values($data['filter_order_status_id']); foreach ($data['filter_order_status_id'] as $key=>$status_id) { $or = ( $key == count($data['filter_order_status_id'])-1 )?'':' or '; $sql .= " o.order_status_id = '" . (int)$status_id . "'" . $or; } } else { $sql .= " o.order_status_id = '" . (int)$data['filter_order_status_id'] . "'"; } } else { $sql .= " WHERE o.order_status_id > '0'"; } В файле admin/controller/common/home.php PHP: $data = array( 'sort' => 'o.date_added', 'order' => 'DESC', 'start' => 0, 'limit' => 10 ); Замените на PHP: $data = array( 'sort' => 'o.date_added', 'order' => 'DESC', 'start' => 0, 'limit' => 10, 'filter_order_status_id' => array('2','5') );
для версии 2.x это уже реализовано Зайдите в меню Система -> Настройки, вкладка "Опции", измените параметр "Статус завершенного заказа"
В файле admin\controller\extension\dashboard\recent.php в функции dashboard, там где PHP: $filter_data = array( 'sort' => 'o.date_added', 'order' => 'DESC', 'start' => 0, 'limit' => 5 ); добавьте PHP: $filter_data = array( 'filter_order_status' => '2,15', //id статусов через запятую 'sort' => 'o.date_added', 'order' => 'DESC', 'start' => 0, 'limit' => 5 );