Перейти к содержанию
vyn

Как отключить пустые категории?

Рекомендуемые сообщения

Как автоматичсеки отключить показ пустых категорий, в которых нет товаров?

Бывает до 100 пустых категорий висит.

Какое условие нужно прописать в коде?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я бы добавил подзапрос для проверки в таблице привязки к товарам в виде 

LEFT JOIN " . DB_PREFIX . "product_to_category p2c 

в public function getCategories

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Или в product/category.php

foreach ($results as $result) {
$data = array(
'filter_category_id'  => $result['category_id'],
'filter_sub_category' => true
);

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

// добавить if $product_total > 0 {
$this->data['categories'][] = array(
'name'  => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''),
'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url),
'thumb' => $this->model_tool_image->resize(($result['image']=='' ? 'no_image.jpg' : $result['image']), $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height'))
);
// добавить }
}
 
Пустые категории не будут добавляться в массив.
  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как автоматичсеки отключить показ пустых категорий, в которых нет товаров?

что значит "отключить"? где?

Бывает до 100 пустых категорий висит.

где они "висят"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Или в product/category.php

foreach ($results as $result) {
$data = array(
'filter_category_id'  => $result['category_id'],
'filter_sub_category' => true
);

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

// добавить if $product_total > 0 {
$this->data['categories'][] = array(
'name'  => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''),
'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url),
'thumb' => $this->model_tool_image->resize(($result['image']=='' ? 'no_image.jpg' : $result['image']), $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height'))
);
// добавить }
}
 
Пустые категории не будут добавляться в массив.

 

Не помогло

 

было так у меня -

foreach ($results as $result) {

                $data = array(

                    'filter_category_id'  => $result['category_id'],

                    'filter_sub_category' => true,

                'coolfilter'         => $coolfilter

                );

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

                $this->data['categories'][] = array(

                    'name'  => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''),

                    'count' => $product_total,

                    'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)

                );

            }

 

 

добавил в нужном месте код. и категории не открываются

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что значит "отключить"? где?

где они "висят"?

эти категории висят после того как с помощью кода скрыты товары с количеством 0шт.(чтобы глаза не мозолили)   но они не выключены(товары) просто скрыты.

товаров много. в ручную не реально отключать. Товары загружаются с 1с

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не помогло

 

было так у меня -

foreach ($results as $result) {

                $data = array(

                    'filter_category_id'  => $result['category_id'],

                    'filter_sub_category' => true,

                'coolfilter'         => $coolfilter

                );

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

                $this->data['categories'][] = array(

                    'name'  => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''),

                    'count' => $product_total,

                    'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)

                );

            }

 

 

добавил в нужном месте код. и категории не открываются

Покажите кусок с исправлениями

Неужто критично отсутствие круглых скобок в 

// добавить if $product_total > 0 {

? Тогда так:

// добавить if ($product_total > 0) {
Изменено пользователем igon

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Покажите кусок с исправлениями

Неужто критично отсутствие круглых скобок в 

// добавить if $product_total > 0 {

? Тогда так:

// добавить if ($product_total > 0) {

теперь так -

 

foreach ($results as $result) {

                $data = array(

                    'filter_category_id'  => $result['category_id'],

                    'filter_sub_category' => true,

            'coolfilter'         => $coolfilter

                );

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

if ($product_total > 0){

                $this->data['categories'][] = array(

                    'name'  => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''),

                    'count' => $product_total,

                    'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)

                );

}

    }

 

вроде пока изменений нет. пустые висят категории. кеш чистил

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

product/category.php - это не единственное место, где формируется массив категорий

 

Есть еще module/category.php.

 

Но там всё чуть посложнее. Пока не готов дать готовое решение. Но принцип решения - тот же.

 

И есть еще common/header.php

 

Вот (да,  только чуть посложнее):

 

В module/category.php нужно два условия на > 0:

if ($product_total > 0){

для подкатегорий 

 

и 

if ($total > 0){

для категории верхнего уровня.

 

 

В common/header.php одно условие 

if ($product_total > 0){

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пока не получается

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я отключил товары с нулевым остатком в админке.

а категории пустые всеравно остались.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

эти категории висят после того как с помощью кода скрыты товары с количеством 0шт.(чтобы глаза не мозолили)   но они не выключены(товары) просто скрыты.

товаров много. в ручную не реально отключать. Товары загружаются с 1с

агов, на том берегу!

что значит "отключить"?

где?

в меню в шапке? в модуле категорий? по product/category&category_id=X не показывать, если нет товаров?

...но они не выключены(товары) просто скрыты...

а смысл вообще какой?

только забот себе добавили в виде "пустых категорий".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.