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

04.07.2015 05:35

В опенкарт не существует корневой категории, каждая категория, не имеющая предка, является корневой, из-за этого нет возможности вывести полный список товаров. При переходе на страницу с категориями без указания 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>

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

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



Антиспам защита форума на fluxbb

Изкоробки fluxbb форум никак не защищён от автоматической регистрации. Рано или поздно наступает момент, когда владелец форума сталкивается с наплывом ботов. Они автоматически регистрируются, создают темы, сообщения и форум превращается в помойку.

Opencart - убрать страну в оформлении заказа

Вариант первый: Вам нужно совсем убрать выбор страны и региона из оформления заказа. Для этого открываем шаблон гостевого заказа: /catalog/view/theme/default/template/checkout/guest.tpl


(14) Комментариев

макс - 19.10.2015 22:44:31
- 0    + 0
ВСе прикольно только все пишет на абракадабре
Пришлось "Корневая категория'" Переименовать в KATALOG
макс - 19.10.2015 22:45:09
- 0    + 0
Версия опенкарт 2020
Илья - 20.10.2015 02:14:37
- 0    + 0
Это из-за того, что Вы сохранили файл в кодировке win1251. Нужно сохранять только в UTF8.
макс - 20.10.2015 10:22:31
- 0    + 0
Спасибо, все получилось
Sputnik - 04.11.2015 06:28:31
- 0    + 0
Привет! Спасибо за инструкцию!

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

Заранее благодарю!
Sputnik - 04.11.2015 06:48:47
- 0    + 0
И хлебные крошки у меня показывают только главную страницу.
Илья - 04.11.2015 07:25:45
- 0    + 0
Если сделано всё правильно, то крошки должны иметь следующий вид:
"Хлебный

А для остального написал инструкцию по созданию контроллера и шаблона
Sputnik - 04.11.2015 07:53:30
- 0    + 0
Наверное, в теме где-то баг. Не работают крошки. Но это не принципиально. Спасибо!
Sputnik - 04.11.2015 07:55:55
- 0    + 0
P.S. Инструкция по созданию контроллера и шаблона очень помогла. Оставил благодарственный коммент там тоже. ))
Илья - 04.11.2015 07:57:49
- 0    + 0
Спасибо!
Павел - 06.11.2015 18:43:43
- 0    + 0
Добрый день. Сделал все по инструкции, но ошибки не убрались и абракадабра, но про нее я понял надо как то сохранить в другом формате.
В-общем строчку вставил, а ошибки не убрались
Илья - 09.11.2015 08:28:12
- 0    + 0
Сохранять нужно только в формате utf-8. Так же категорически нельзя редактировать файлы с помощью notepad и любой офисной программы. Для windows используйте Sublime Text.
Konstantin - 25.04.2016 10:39:10
- 0    + 0
Спасибо! Как раз то, что надо! Только теперь выдает такую ошибку по адресу Notice: Undefined index: category_id in mysitesystemstoragemodificationcatalogcontrollerproductcategory.php on line 489
что поправить не пойму)
ОЛОЛО - 08.06.2016 17:54:16
- 0    + 0
пример по ссылке не работает