Всё о web

Для чайников и не только


Список всех товаров Opencart

Июль 4, 2015

В опенкарт не существует корневой категории, каждая категория, не имеющая предка, является корневой, из-за этого нет возможности вывести полный список товаров. При переходе на страницу с категориями без указания path, получаем ошибку.

Чтобы это исправить открываем: /catalog/model/catalog/category.php, нам нужна первая функция getCategory, полностью переписываем её к следующему виду:

	public function getCategory($category_id) {
	if($category_id!=0)
		{
		$query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.category_id = '" . (int)$category_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1'");

		return $query->row;
		}else
		{
		$category_info['meta_title']='Корневая категория';
		$category_info['meta_description']='Корневая категория';
		$category_info['meta_keyword']='Корневая категория';
		$category_info['name']='Корневая категория';
		$category_info['image']='';
		$category_info['description']='';
		
		return $category_info;
		}
	}

После этого, при обновлении страницы категории без указания path начнут выводиться все товары и все родительские категории, но теперь появилась куча ошибок вида: "Notice: Undefined index: path in /var/www/opencart.allwebstuff.info/catalog/controller/product/category.php on line 96"

Это значит, что контроллер, не получив path в гет запросе, теперь не может корректно его обработать.

Открываем файл: /catalog/controller/product/category.php, в районе 87-й строки находим следующий код:

		} else {
			$category_id = 0;
		}

Ниже $category_id = 0; , но перед закрывающей скобкой } вставляем строчку:

$this->request->get['path']='';

И сразу ниже строчки:

$category_info = $this->model_catalog_category->getCategory($category_id);

добавляем:

if(!isset($category_info['category_id']))$category_info['category_id'] = '';

Ошибка устранена. Далее нужно куда-либо вставить ссылку на корневую категорию. Открываем файл: /catalog/view/theme/default/template/module/category.tpl, сразу ниже строчки

<div class="list-group">

вставляем ссылку:

<a href="/index.php?route=product/category" class="list-group-item">Все товары</a>

Теперь у нас в модуле "категории" в самом верху расположена ссылка на корень всех категорий и товаров.

Результат можно посмотреть здесь.



Комментарии

14 комментариев | “Список всех товаров Opencart

  1. Аватар макс:

    ВСе прикольно только все пишет на абракадабре
    Пришлось «Корневая категория'» Переименовать в KATALOG

  2. Аватар макс:

    Версия опенкарт 2020

    1. Илья Илья:

      Это из-за того, что Вы сохранили файл в кодировке win1251. Нужно сохранять только в UTF8.

  3. Аватар макс:

    Спасибо, все получилось

  4. Аватар Sputnik:

    Привет! Спасибо за инструкцию!

    А есть вариант переписать код так, чтобы выводить только товары без списка категорий над ними. Категории уже есть в сайдбаре. И возможно ли для данной «корневой категории» сделать отдельный шаблон?

    Заранее благодарю!

  5. Аватар Sputnik:

    И хлебные крошки у меня показывают только главную страницу.

    1. Илья Илья:

      Если сделано всё правильно, то крошки должны иметь следующий вид:
      Хлебный крошки списка категорий

      А для остального написал инструкцию по созданию контроллера и шаблона

  6. Аватар Sputnik:

    Наверное, в теме где-то баг. Не работают крошки. Но это не принципиально. Спасибо!

  7. Аватар Sputnik:

    P.S. Инструкция по созданию контроллера и шаблона очень помогла. Оставил благодарственный коммент там тоже. ))

  8. Илья Илья:

    Спасибо!

  9. Аватар Павел:

    Добрый день. Сделал все по инструкции, но ошибки не убрались и абракадабра, но про нее я понял надо как то сохранить в другом формате.
    В-общем строчку вставил, а ошибки не убрались

  10. Илья Илья:

    Сохранять нужно только в формате utf-8. Так же категорически нельзя редактировать файлы с помощью notepad и любой офисной программы. Для windows используйте Sublime Text.

  11. Аватар Konstantin:

    Спасибо! Как раз то, что надо! Только теперь выдает такую ошибку по адресу Notice: Undefined index: category_id in mysite\system\storage\modification\catalog\controller\product\category.php on line 489
    что поправить не пойму)

  12. Аватар ОЛОЛО:

    пример по ссылке не работает

Comments are closed.