Как убрать количество товаров в категориях OpenCart

Все версии CMS OpenCart имеют такую функцию как подсчёт количества товаров в категориях. Это те цифры в скобочках которые высвечиваются рядом с названием группы товаров. Данная функция значительно тормозит работу вашего магазина и её желательно отключить.

В свежих версиях OpenCart данная возможность предусмотрена в админке. Прежде чем лезть и править код по инструкции данной статьи зайдите в админку и проверьте, возможно, необходимо лишь поставить(убрать) галочку в нужных местах.

Убираем функцию в админ. панели

Заходим в Система—>Настройки—>Изменить
разделе «Опции» ищем пункт «Подсчет количества товаров» и выключаем его.

Нашли? Повезло! 😉

Но, не спешите радоваться, это мы отключили подсчет только в верхнем меню, а у нас он остался ещё в одном месте… Идем в раздел модули и находим «Категории». Смотрим, есть выключение подсчета товаров? Выключаем его!

Вот и всё! Вы отделались малой кровью 😉 Теперь может наполнять свой магазин кучей товара и он будет летать!

Делаем всё ручками

Для тех у кого ОпенКарт версии 1.5.1.3 повезло меньше, и надо опять править код. Много где пишут что надо убрать только одно слово, но на самом деле, при таком подходе сам просчет остается и грузит магазин, он просто вы показывает вам результат.

Давайте сделаем как положено. Уберём саму функцию просчёта.

Верхнее меню

Сначала почистим верхнее меню.
Идём в /catalog/controller/common/header.php и районе 200-ой строки видим код:

$product_total = $this->model_catalog_product->getTotalProducts($data);

$children_data[] = array(
‘name’ => $child[‘name’] . ‘ (‘ . $product_total . ‘)’,
‘href’ => $this->url->link(‘product/category’, ‘path=’ . $category[‘category_id’] . ‘_’ . $child[‘category_id’])
);

Первую строчку комментируем! (добавляем два слеша в самом начале строки) А в третьей убираем вывод того самого $product_total
У нас должно получится так:

//$product_total = $this->model_catalog_product->getTotalProducts($data);

$children_data[] = array(
‘name’ => $child[‘name’],
‘href’ => $this->url->link(‘product/category’, ‘path=’ . $category[‘category_id’] . ‘_’ . $child[‘category_id’])
);

Меняем категории

С верхним меню разобрались, теперь с категориями…
Заходим в /catalog/controller/module/category.php

И делаем тоже самое что и с header.php — находим строки с product_total и одну комментируем, вторую меняем на:

‘name’ => $child[‘name’],

Будьте внимательны! В данном файле данную процедуру нужно сделать дважды.

Но, как оказалось и этого мало.
Ещё, когда в ваших категориях есть подкатегории, то там остался вывод количества товара.
Чтобы и здесь убрать идём в: /catalog/controller/product/category.php

Находим те же строки в районе 150-ой и комментируем и удаляем. Должно получится так:

//$product_total = $this->model_catalog_product->getTotalProducts($data);

$this->data[‘categories’][] = array(
‘name’ => $result[‘name’],

Обратите внимание!

Для тех, у кого стоит фильтр товаров ocFilter, указанные далее строки править НЕ надо! Иначе ваш фильтр перестанет работать.

Где-то на 173 строке есть код:

$product_total = $this->model_catalog_product->getTotalProducts($data);

Его тоже комментируем двумя слешами, и спускаемся ниже к 421 строке:

$pagination = new Pagination();
$pagination->total = $product_total;
$pagination->page = $page;
$pagination->limit = $limit;

Видите вторую строку с нам уже известной $product_total? Вот её и закомментируем.

//$pagination->total = $product_total;

Теперь точно всё! И в меню убрали и во всех категориях в разных местах убрали подсчёт количества товара.