Отключение пустых категорий Opencart 3

12
Василич#
На сайте с 10.03.2009
Offline
111
2477

Здравствуйте ! Столкнулся с проблемой. На сайте свыше 300 категорий и нужно не показывать категории, в которых нет товара.

Вся проблема в том, что Opencart 3, и нет решений, обрыл все.

Может кто знает решение ?

Заранее спасибо.

bmw-power.com.ua (https://bmw-power.com.ua)
Василич#
На сайте с 10.03.2009
Offline
111
#1

Или может кто подскажет как удалить категории в которых нет товаров ?

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#2

Покопаться в коде надо:

https://forum.opencart.com/viewtopic.php?t=139068

---------- Добавлено 25.01.2019 в 12:20 ----------

Ну и модуль за двацатку продают:

https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=24339&filter_download_id=35&page=2

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Василич#
На сайте с 10.03.2009
Offline
111
#3

Купил этот https://shop.opencart-russia.ru/udalenie-pustyih-proizvoditeley-kategoriy а он отказывается работать как надо. Понял что надо другим путём, он работает как запрос:

$this->load->model('catalog/category');

$categories = $this->model_catalog_category->getCategories(0);
foreach ($categories AS $category) {
$product = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product_to_category WHERE category_id = '" . (int)$category['category_id'] . "'");
if ($product->num_rows == 0) {
$this->model_catalog_category->deleteCategory($category['category_id']);
}
}

Но его проблем в том, что он удаляет также родительские категории, т.е. если в подкатегории есть товар, а в родительской нету, то сносит и родительскую.

Помогите пожалуйста оптимизировать запрос, извращался по разному, знания не позволяют добиться нужного...

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#4

Сделайте

print_r($category);

exit;

надо посмотреть, если ли дочерняя категория у текущей категории.

т.е. надо проработать логику, чтобы работало только с дочерними категорями.

У вас же явно нет главных категорий в которых нет товаров.

Василич#
На сайте с 10.03.2009
Offline
111
#5

LEOnidUKG, большое спасибо за постоянную помощь !

print_r($category);
exit;

Это в исполняемый файл вставить ?

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#6

Это сразу после:

foreach ($categories AS $category) {

---------- Добавлено 25.01.2019 в 13:50 ----------

Нам просто структуру надо посмотреть, что там есть.

Василич#
На сайте с 10.03.2009
Offline
111
#7
LEOnidUKG:
Это сразу после:

foreach ($categories AS $category) {

---------- Добавлено 25.01.2019 в 13:50 ----------

Нам просто структуру надо посмотреть, что там есть.

Спасибо ! Выдало вот это:

А сами категории у меня так:

т.е. если есть в категории Гигиена и уход за ребенком > Детская стирка товар, а в Гигиена и уход за ребенком нет, то оно сносит и родительскую Гигиена и уход за ребенком

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#8

foreach ($categories AS $category) {

if (!$category['parent_id']) {continue;} //Если категория родительская ничего не делаем

Василич#
На сайте с 10.03.2009
Offline
111
#9

LEOnidUKG, огромное спасибо за ответы, достал уже Вас конкретною Но так скрипт вообще ничего не удаляет (((

Вот так сделал:

<?php


$this->load->model('catalog/category');


$categories = $this->model_catalog_category->getCategories(0);
foreach ($categories AS $category) {

if (!$category['parent_id']) {continue;}

$product = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product_to_category WHERE category_id = '" . (int)$category['category_id'] . "'");
if ($product->num_rows == 0) {
$this->model_catalog_category->deleteCategory($category['category_id']);
}
}

?>
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#10
$categories = $this->model_catalog_category->getCategories(0);

Ёмаё, да он же вообще просто берёт только главные категории.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий