Доделал сам.
Все изменения только в файле catalog/controller/product/category.php
Если кому интересно, то:
Изменил start на 0 и limit сделал 1000, чтобы выбрать наверняка все товары из группы (немного костыльно, но все же работает):
$data = array(
'filter_category_id' => $category_id,
'filter_filter' => $filter,
'sort' => $sort,
'order' => $order,
'start' => 0,
// 'start' => ($page - 1) * $limit,
'limit' => 1000
// 'limit' => $limit
);
$product_total = $this->model_catalog_product->getTotalProducts($data);
Далее описываем функцию и запускаем, если сортировка стоит по-умолчанию:
function cmp($a, $b) {
...
return ($a < $b) ? -1 : 1;
}
if($sort == 'p.sort_order') {
uasort($results, "cmp");
}
Далее добавил счетчик и пару переменных. В цикле вывожу товары только для нужной страницы:
$num = 0;
$start1 = ($page - 1) * $limit;
$limit1 = $page * $limit;
foreach ($results as $result) {
if (($num >= $start1) && ($num < $limit1)) {
...
}
$num++;
}