хуйу нас не матерятся
В опенкарт не существует корневой категории, каждая категория, не имеющая предка, является корневой, из-за этого нет возможности вывести полный список товаров. При переходе на страницу с категориями без указания 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>
Теперь у нас в модуле "категории" в самом верху расположена ссылка на корень всех категорий и товаров.
Результат можно посмотреть здесь.
Это из-за того, что Вы сохранили файл в кодировке win1251. Нужно сохранять только в UTF8.
Привет! Спасибо за инструкцию!
А есть вариант переписать код так, чтобы выводить только товары без списка категорий над ними. Категории уже есть в сайдбаре. И возможно ли для данной "корневой категории" сделать отдельный шаблон?
Заранее благодарю!
Если сделано всё правильно, то крошки должны иметь следующий вид: <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>
P.S. Инструкция по созданию контроллера и шаблона очень помогла. Оставил благодарственный коммент там тоже. ))
Добрый день. Сделал все по инструкции, но ошибки не убрались и абракадабра, но про нее я понял надо как то сохранить в другом формате. В-общем строчку вставил, а ошибки не убрались
Сохранять нужно только в формате utf-8. Так же категорически нельзя редактировать файлы с помощью notepad и любой офисной программы. Для windows используйте Sublime Text.
Спасибо! Как раз то, что надо! Только теперь выдает такую ошибку по адресу Notice: Undefined index: category_id in mysitesystemstoragemodificationcatalogcontrollerproductcategory.php on line 489 что поправить не пойму)
ВСе прикольно только все пишет на абракадабре Пришлось "Корневая категория'" Переименовать в KATALOG