Разработка

Вывод категории в карточке товара OpenCart 2.3

Краткое руководство

Для этого нам понадобится скорректировать 3 файла:

- catalog/controller/product/product.php
- catalog/model/catalog/product.php
- catalog/view/theme/default/template/product/product.tpl

1. Сначала отредактируем файл модели catalog/model/catalog/product.php и добавим в него три функции:
получаем id главной категории (ближайшей):

public function getProductMainCategoryId($product_id) {
$query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1' LIMIT 1");
return ($query->num_rows ? (int)$query->row['category_id'] : 0);
}

получаем название главной категории (ближайшей):
public function getProductMainCategoryName($main_category_id) {
$query = $this->db->query("SELECT name FROM " . DB_PREFIX . "category_description WHERE category_id = '" . (int)$main_category_id. "'");
return ($query->num_rows ? $query->row['name'] : 0);
}

получаем url главной категории (ближайшей):
public function getProductMainCategoryUrl($main_category_id) {
$query = $this->db->query("SELECT keyword FROM " . DB_PREFIX . "url_alias WHERE query = '" . "category_id=".(int)$main_category_id. "'");
return ($query->num_rows ? $query->row['keyword'] : 0);
}

2. Теперь корректируем файл контроллера. Добавляем слудующий код:
Так где-то в 289 строке прописываем:

$main_category_id = $this->model_catalog_product->getProductMainCategoryId((int)$this->request->get['product_id']);

далее:
$data['category_name'] = $this->model_catalog_product->getProductMainCategoryName($main_category_id);  // Выводим имя категории

$data['category_url'] = $this->model_catalog_product->getProductMainCategoryUrl($main_category_id);  // Прописываем ссылку на категории

3. Вставляем в нужное место что-то вроде:

< a href="kollekcii/<?php echo $category_url; ?>"><?php echo $category_name; ?></a>

Пример работы кода.


Поделиться

А теперь поговорим о вашем проекте!