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



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

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

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


Сообщество: AWS

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


ID: #334   Создан:
Автор: макс

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

ID: #335   Создан:
Автор: макс

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

ID: #336   Создан:
Автор: ololoev
>>335

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

ID: #337   Создан:
Автор: макс

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

ID: #338   Создан:
Автор: Sputnik

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

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

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

ID: #339   Создан:
Автор: Sputnik

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

ID: #340   Создан:
Автор: ololoev
>>339

Если сделано всё правильно, то крошки должны иметь следующий вид: <img src="http://allwebstuff.info/img/all_prods.png" alt="Хлебный крошки списка категорий" />

А для остального написал инструкцию по <a href="http://allwebstuff.info/%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d0%b5-%d0%ba%d0%be%d0%bd%d1%82%d1%80%d0%be%d0%bb%d0%bb%d0%b5%d1%80%d0%b0-%d0%b8-%d1%88%d0%b0%d0%b1%d0%bb%d0%be%d0%bd%d0%b0-%d0%bd%d0%b0-opencart-2/">созданию контроллера и шаблона</a>

ID: #341   Создан:
Автор: Sputnik

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

ID: #342   Создан:
Автор: Sputnik

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

ID: #343   Создан:
Автор: ololoev

Спасибо!

ID: #344   Создан:
Автор: Павел

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

ID: #345   Создан:
Автор: ololoev

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

ID: #346   Создан:
Автор: Konstantin

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

ID: #347   Создан:
Автор: ОЛОЛО

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

Всего: 14 комментариев на 1 страницах

Ваш комментарий будет анонимным. Чтобы оставить не анонимный комментарий, пожалуйста, зарегистрируйтесь



Сообщества