Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Вывести название категории на странице товара


Recommended Posts

Всем привет! Версия OpenCart 3.0.2.0

Столкнулся с проблемой, нужно вывести на страницу товара, категорию которой он принадлежит. Хотел сперва сделать через хлебные крошки, но потом понял что если найти товар по поиску, то там будет отображаться "Search", вместо категории. По этому такой вариант не подходит. 

 

Потом наткнулся на другой способ

 

catalog/model/product/product.php

public function getCategoryNames($product_id) {     
        $query = $this->db->query("SELECT cd.name
                        FROM " . DB_PREFIX . "category_description cd
                        LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p2c.category_id = cd.category_id)
                            WHERE p2c.product_id = '" . (int)$product_id . "'
                            AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "'");     
        return $query->rows;
    }

catalog/controller/product/product.php

После этого

$data['points'] = $product_info['points']

Добавил 

$data['cat_list'] = $this->model_catalog_product->getCategoryNames($product_id);

И в самом файле product.twig

{% if catlist %}
                {% for catlist in catname %}
                    <li>{{ catname.name }}</li>
                {% endfor %}
{% endif %}

Но почему то ничего не выводит. Кеш конечно же очищал. Может тут что то не так?) Подскажите, пожалуйста

Надіслати
Поділитися на інших сайтах

Я поменял на getCategory в контролере и в моделе и добавил $this->load->model('catalog/category'); (сначала в контролер, потом проверил, потом в модель)

Но всё равно не работает

Надіслати
Поділитися на інших сайтах

13 минут назад, buslikdrev сказал:

{% for catlist in catname %}

Попробуйте местами поменять

В каком смысле?)

Типа так: ?

{% for catname in catlist %}

UPD: проверил, так тоже не работает

Змінено користувачем Skymod
Надіслати
Поділитися на інших сайтах

39 минут назад, Skymod сказал:

$this->load->model('catalog/category')

Я не обратил внимание. Такое подключение должно быть:

$this->load->model('catalog/product')

 

Также вам нужно удалить правки product.twig, если вносили через редактор тем.

Надіслати
Поділитися на інших сайтах

40 минут назад, Skymod сказал:

UPD: проверил, так тоже не работает

cat_list должно называться

{% if cat_list %}
                {% for catname in cat_list %}
                    <li>{{ catname.name }}</li>
                {% endfor %}
{% endif %}
  • +1 1
Надіслати
Поділитися на інших сайтах

13 минут назад, buslikdrev сказал:

cat_list должно называться


{% if cat_list %}
                {% for catname in cat_list %}
                    <li>{{ catname.name }}</li>
                {% endfor %}
{% endif %}

Спасибо большое!) Всё работает

Надіслати
Поділитися на інших сайтах

2 часа назад, Skymod сказал:

Всем привет! Версия OpenCart 3.0.2.0

Столкнулся с проблемой, нужно вывести на страницу товара, категорию которой он принадлежит. Хотел сперва сделать через хлебные крошки, но потом понял что если найти товар по поиску, то там будет отображаться "Search", вместо категории. По этому такой вариант не подходит. 

 

Потом наткнулся на другой способ

 

catalog/model/product/product.php


public function getCategoryNames($product_id) {     
        $query = $this->db->query("SELECT cd.name
                        FROM " . DB_PREFIX . "category_description cd
                        LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p2c.category_id = cd.category_id)
                            WHERE p2c.product_id = '" . (int)$product_id . "'
                            AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "'");     
        return $query->rows;
    }

catalog/controller/product/product.php

После этого


$data['points'] = $product_info['points']

Добавил 


$data['cat_list'] = $this->model_catalog_product->getCategoryNames($product_id);

И в самом файле product.twig


{% if catlist %}
                {% for catlist in catname %}
                    <li>{{ catname.name }}</li>
                {% endfor %}
{% endif %}

Но почему то ничего не выводит. Кеш конечно же очищал. Может тут что то не так?) Подскажите, пожалуйста

должна быть готовая настройка 

Надіслати
Поділитися на інших сайтах

  • 2 years later...

решение для окстор если нужно вывести главную категорию в которую входит товар:

 

модель, где то после:

public function getCategories($product_id) {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "'");

        return $query->rows;
    }

 

вставить это:

public function getMainCategory($product_id) {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1'");

        return (int)$query->row['category_id'];
    }

 

в контроллер:

$data['mid'] = $this->model_catalog_product->getMainCategory($this->request->get['product_id']);

 

и в твиг это:

{{ mid }}

 

Надіслати
Поділитися на інших сайтах


  • 6 months later...

Добрый день! Подскажите пожалуйста, таким же образом можна вывести описание категории в карточте товара?
Как это можна сделать? ocStore Версія 3.0.2.0


Этот код работает:

модель:

    public function getCategoryDescription($product_id) {     
        $query = $this->db->query("SELECT cd.description
                        FROM " . DB_PREFIX . "category_description cd
                        LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p2c.category_id = cd.category_id)
                            WHERE p2c.product_id = '" . (int)$product_id . "'
                            AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "'");     
        return $query->rows;
    }

 

в контроллер:
$data['cat_list'] = $this->model_catalog_product->getCategoryDescription($product_id);

 

и в твиг это:

{% if cat_list %}
                {% for catname in cat_list %}
                    {{ catname.description }}
                {% endfor %}
{% endif %}

 

Но выводит не в html, а вот так:
<table> <tbody> <tr> <td style="text-align: center;" colspan="2"><a href="https://style.vents-mag.com.ua/" target="_blank" rel="noopener"><img src="https://vents-mag.com.ua/uploads/domestic_fans/Design_Concept/V_banner_DC_selection_1220x251px_UA.png" alt="" width="1000" height="206" /></a></td> </tr> <tr> <td colspan="2"><span class="titleBlueBlock">ЗАСТОСУВАННЯ</span>&nbsp;</td> </tr> <tr> <td> <ul> <li>Інноваційний витяжний вентилятор сумісний зі стильними декоративними панелями.</li> <li>Постійна або періодична витяжна вентиляція санвузлів, душових, кухонь та інших побутових приміщень.</li> </ul> </td> <td> <ul> <li>Висока витрата повітря у поєднанні з низьким рівнем шуму гарантує ідеальний мікроклімат.</li> <li>Для монтажу у вентиляційні шахти або з'єднання з повітропроводами діаметром 100, 125&nbsp;та&nbsp;150 мм.</li> </ul> </td> </tr> <tr> <td colspan="2"><span class="titleBlueBlock">КОНСТРУКЦІЯ</span>&nbsp;</td> </tr> <tr> <td> <ul> <li>Корпус та крильчатка вентилятора виконані з високоякісного та міцного АБС-пластику, стійкого до ультрафіолету.</li> <li>Ступінь захисту &mdash; IP24.</li> </ul> </td> <td> <ul> <li>Конструкція крильчатки дозволяє підвищити ефективність вентилятора та термін служби двигуна.</li> </ul> </td> </tr> <tr> <td colspan="2"><span class="titleBlueBlock">ЕЛЕКТРОДВИГУН</span>&nbsp;</td> </tr> <tr> <td> <ul> <li>Призначений для безперервної роботи та не потребує обслуговування.</li> </ul> </td> <td> <ul> <li>Обладнаний захистом від перегрівання.</li> </ul> </td> </tr> </tbody> </table>

Как добавить к: 
$data['cat_list'] = $this->model_catalog_product->getCategoryDescription($product_id);
это: html_entity_decode

Змінено користувачем Qdons
Надіслати
Поділитися на інших сайтах


22.12.2023 в 12:19, Qdons сказал:

Добрый день! Подскажите пожалуйста, таким же образом можна вывести описание категории в карточте товара?
Как это можна сделать? ocStore Версія 3.0.2.0


Этот код работает:

модель:

    public function getCategoryDescription($product_id) {     
        $query = $this->db->query("SELECT cd.description
                        FROM " . DB_PREFIX . "category_description cd
                        LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p2c.category_id = cd.category_id)
                            WHERE p2c.product_id = '" . (int)$product_id . "'
                            AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "'");     
        return $query->rows;
    }

 

в контроллер:
$data['cat_list'] = $this->model_catalog_product->getCategoryDescription($product_id);

 

и в твиг это:

{% if cat_list %}
                {% for catname in cat_list %}
                    {{ catname.description }}
                {% endfor %}
{% endif %}

 

Но выводит не в html, а вот так:
<table> <tbody> <tr> <td style="text-align: center;" colspan="2"><a href="https://style.vents-mag.com.ua/" target="_blank" rel="noopener"><img src="https://vents-mag.com.ua/uploads/domestic_fans/Design_Concept/V_banner_DC_selection_1220x251px_UA.png" alt="" width="1000" height="206" /></a></td> </tr> <tr> <td colspan="2"><span class="titleBlueBlock">ЗАСТОСУВАННЯ</span>&nbsp;</td> </tr> <tr> <td> <ul> <li>Інноваційний витяжний вентилятор сумісний зі стильними декоративними панелями.</li> <li>Постійна або періодична витяжна вентиляція санвузлів, душових, кухонь та інших побутових приміщень.</li> </ul> </td> <td> <ul> <li>Висока витрата повітря у поєднанні з низьким рівнем шуму гарантує ідеальний мікроклімат.</li> <li>Для монтажу у вентиляційні шахти або з'єднання з повітропроводами діаметром 100, 125&nbsp;та&nbsp;150 мм.</li> </ul> </td> </tr> <tr> <td colspan="2"><span class="titleBlueBlock">КОНСТРУКЦІЯ</span>&nbsp;</td> </tr> <tr> <td> <ul> <li>Корпус та крильчатка вентилятора виконані з високоякісного та міцного АБС-пластику, стійкого до ультрафіолету.</li> <li>Ступінь захисту &mdash; IP24.</li> </ul> </td> <td> <ul> <li>Конструкція крильчатки дозволяє підвищити ефективність вентилятора та термін служби двигуна.</li> </ul> </td> </tr> <tr> <td colspan="2"><span class="titleBlueBlock">ЕЛЕКТРОДВИГУН</span>&nbsp;</td> </tr> <tr> <td> <ul> <li>Призначений для безперервної роботи та не потребує обслуговування.</li> </ul> </td> <td> <ul> <li>Обладнаний захистом від перегрівання.</li> </ul> </td> </tr> </tbody> </table>

Как добавить к: 
$data['cat_list'] = $this->model_catalog_product->getCategoryDescription($product_id);
это: html_entity_decode

Розібрався!

В модель в public function getProduct($product_id) { вставляємо:
if ($query->num_rows) {
            $catdes_query = $this->db->query("SELECT cd.description
                        FROM " . DB_PREFIX . "category_description cd
                        LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p2c.category_id = cd.category_id)
                            WHERE p2c.product_id = '" . (int)$product_id . "'
                            AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "'");
if($catdes_query->num_rows)  {
    $catdes = $catdes_query->row['description'];
} else {
    $catdes = "";
}
}

 

Потім після: 
return array(
                'product_id'       => $query->row['product_id'],
Вставляємо:
'catdes'           => $catdes,

В контролер після $data['points'] = $product_info['points']; всталяємо:
$data['catdes'] = html_entity_decode($product_info['catdes'], ENT_QUOTES, 'UTF-8');

В твиг вставляємо:
                {% if catdes %}
                    <div class="tab-pane" id="tab-catdes">{{ catdes }}</div>
                {% endif %}

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.