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

Вывод атрибутов в карточке товара


svetnik

Recommended Posts

так скопируйте просто код из таба характеристик (атрибутов), хоть так же таблицей, хоть меняйте оформление как нравится

вот это можете разместить там где нужно показать атрибуты:

              <table class="table table-bordered">
                {% for attribute_group in attribute_groups %}
                <thead>
                  <tr>
                    <td colspan="2"><strong>{{ attribute_group.name }}</strong></td>
                  </tr>
                </thead>
                <tbody>
                {% for attribute in attribute_group.attribute %}
                <tr>
                  <td>{{ attribute.name }}</td>
                  <td>{{ attribute.text }}</td>
                </tr>
                {% endfor %}
                  </tbody>
                {% endfor %}
              </table>

Не забудьте потом обновить кеш модификаторов и кеш шаблона на главной в настройках разработчика

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

  • 2 months later...

вставил ваш код сюда: 

catalog/view/theme/default my/template/product/category.twig

и сюда

catalog/view/theme/default my/template/extension/module/featured.twig

вот этот код показывается:

<table class="table table-bordered"></table>

А инфы про атрибутов нет =(

opencart Version 3.0.3.1 (rs.2)

P.S. обновил и выключил потом кеш и обновлял модули.

P

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


4 часа назад, grangel сказал:

вставил ваш код сюда: 

catalog/view/theme/default my/template/product/category.twig

и сюда

catalog/view/theme/default my/template/extension/module/featured.twig

Конечно не будет там показываться. На странице товаров есть данные об атрибутах, то есть они получаются соответствующим контроллером, а на странице категорий и в модуле рекомендуемых их не будет так как контроллеры не получают атрибуты товара.

Сейчас нет возможности проверить на 3.х, но можете попробовать добавить в контроллер категории (catalog/controller/product/category.php) в массив данных товара:

'attribute_groups' => $this->model_catalog_product->getProductAttributes($result['product_id'])

если взлетит, то по аналогии и с рекомендуемыми

добрался до 3.х))

 

1. catalog/controller/product/category.php

найти: 

'product_id'  => $result['product_id'],

добавить перед:

'attribute_groups' => $this->model_catalog_product->getProductAttributes($result['product_id']),

2. catalog/view/theme/default/template/product/category.twig

найти: 

<p>{{ product.description }}</p>

добавить после:

              <table class="table table-bordered">
                {% for attribute_group in product.attribute_groups %}
                <thead>
                  <tr>
                   <td colspan="2"><strong>{{ attribute_group.name }}</strong></td>
                  </tr>
                </thead>
                <tbody>
                {% for attribute in attribute_group.attribute %}
                <tr>
                  <td>{{ attribute.name }}</td>
                  <td>{{ attribute.text }}</td>
                </tr>
                {% endfor %}
                  </tbody>
                {% endfor %}
              </table>

3. catalog/controller/extension/module/featured.php

найти: 

'product_id'  => $product_info['product_id'],

добавить перед: 

'attribute_groups' => $this->model_catalog_product->getProductAttributes($product_info['product_id']),

4. catalog/view/theme/default/template/extension/module/featured.twig

найти:

<p>{{ product.description }}</p>

добавить после:

              <table class="table table-bordered">
                {% for attribute_group in product.attribute_groups %}
                <thead>
                  <tr>
                    <td colspan="2"><strong>{{ attribute_group.name }}</strong></td>
                  </tr>
                </thead>
                <tbody>
                {% for attribute in attribute_group.attribute %}
                <tr>
                  <td>{{ attribute.name }}</td>
                  <td>{{ attribute.text }}</td>
                </tr>
                {% endfor %}
                  </tbody>
                {% endfor %}
              </table>

Если что-то не выводится, проверьте внимательно еще раз))

 

И конечно вы должны понимать, что править код файлов движка - это зло. Делайте все через ocmod

Змінено користувачем PaulKravchenko
  • +1 2
Надіслати
Поділитися на інших сайтах

  • 1 year later...
  • 9 months later...

PaulKravchenko Вылетают все атрибуты. А как из этого всего вывести именно {{ attribute.text }} с атрибутом_id=2 Для модуля features?

Попробовал как на скрине, но вылетает ошибка

 

Screenshot_51.jpg

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


                $query = $this->db->query("SELECT ad.name, pa.text FROM " . DB_PREFIX . "attribute a
                        LEFT JOIN " . DB_PREFIX . "attribute_description ad ON (a.attribute_id = ad.attribute_id)
                        LEFT JOIN " . DB_PREFIX . "product_attribute pa ON(pa.attribute_id = a.attribute_id)
                        WHERE a.attribute_id = '2' 
                        AND pa.product_id = '" . (int) $product_id . "'
                        AND pa.language_id = '" . (int) $this->config->get('config_language_id') . "'
                        AND ad.language_id = '" . (int)$this->config->get('config_language_id') . "'");
                
                $attr = $query->row;

 

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

это для одного атрибута

в телеге спрашивали

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

3 часа назад, fanatic сказал:

это для одного атрибута

в телеге спрашивали

Да, спасибо. Вставил и в контроллер и в модел. Правда ничего кроме прочерка не отобразилось. Может важно на какой строке вставлять в контроллере?

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


модель  catalog/model/catalog/product.php

создаем метод

    public function getAttributeInProduct($product_id, $attribute_id) {
        $query = $this->db->query("SELECT ad.name, pa.text FROM " . DB_PREFIX . "attribute a
                        LEFT JOIN " . DB_PREFIX . "attribute_description ad ON (a.attribute_id = ad.attribute_id)
                        LEFT JOIN " . DB_PREFIX . "product_attribute pa ON(pa.attribute_id = a.attribute_id)
                        WHERE a.attribute_id = '" . (int) $attribute_id . "' 
                        AND pa.product_id = '" . (int) $product_id . "'
                        AND pa.language_id = '" . (int) $this->config->get('config_language_id') . "'
                        AND ad.language_id = '" . (int) $this->config->get('config_language_id') . "'");

        return $query->row;
    }

для категории

файл  сatalog/controller/product/category.php

находим строку

$data['products'][] = array(

перед ней вставляем

$attribute_id = 2;// тут, id нужного атрибута
$attr = $this->model_catalog_product->getAttributeInProduct($result['product_id'], $attribute_id);

после вставляем

'attr' => $attr,

шаблон  catalog/view/theme/ваша тема/template/product/category.twig

находим

<p>{{ product.description }}</p>

после вставляем

{% if  product.attr %}
  <p>{{ product.attr['name'] }} - {{ product.attr['text'] }}</p>
{% endif %}

для featured,  делаем по аналогии

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

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

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

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

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

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

Вхід

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

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

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

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

Important Information

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