Вывод атрибутов в категории и модулях

Тема в разделе "Общие вопросы", создана пользователем Slait, 28 сен 2015.

  1. Slait

    Slait Эксперт

    Сообщения:
    503
    Симпатии:
    456
    Подскажите как вывести атрибуты в категории и модулях.

    Т.е. вместо описания.
    Для одного проекта понадобилось.

    2015-09-28 10-38-34 Скриншот экрана.png
     
  2. Ravilr

    Ravilr Специалист

    Сообщения:
    3.981
    Симпатии:
    1.087
    как то так

    PHP:
          $attribute_groupss $this->model_catalog_product->getProductAttributes($this->request->get['product_id']);
           
    $attribute_groupp = array();
           foreach (
    $attribute_groupss as $attribute_groupp) {
             
    $attribute_grouppp[] = $attribute_groupp['attribute'];
           }
           
    $data['attr'] = $attribute_grouppp;
    а дальше в шаблоне перебираем массив. Ну или по задаче готовим его в контроллере.
     
    RoS, Slait и solunski.d нравится это.
  3. Slait

    Slait Эксперт

    Сообщения:
    503
    Симпатии:
    456
    Большое спасибо за предложенное решение, я решил по другому.

    Для категорий, поиска, акций

    В контроллерах
    catalog\controller\product\category.php
    + compare.php
    + manufacturer.php
    + search.php
    + special.php

    В массиве после
    Код:
    'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..',
    Добавляем
    Код:
    'attribute_groups' => $this->model_catalog_product->getProductAttributes($result['product_id']),
    В шаблонах
    catalog\view\theme\Ваша тема\template\product\category.tpl
    + compare.tpl
    + manufacturer_list.tpl
    + search.tpl
    + special.tpl

    Выбираем нужное место для вывода и добавляем:
    Код:
    <?php if($product['attribute_groups']) { ?>
                    <?php foreach($product['attribute_groups'] as $attribute_group) { ?>
                        <?php if(!strpos($attribute_group['name'], "—")) {?>
                            <?php foreach($attribute_group['attribute'] as $attribute) { ?>
                                <b><?php echo $attribute['name']; ?></b> <?php echo $attribute['text']; ?><br>
                            <?php } ?>
                        <?php } ?>
                    <?php } ?>
                <?php } ?>


    P.S. Для модулей

    Все аналогично выше описанному, только для получения данных нужно подключить
    Код:
    $this->load->model('catalog/product');
    В итоге получаем вывод атрибутов
    2015-09-28 13-39-29 Скриншот экрана.png
     
    Allaur, Awakum, adamenko и 3 другим нравится это.
  4. Allaur

    Allaur Пользователь

    Сообщения:
    74
    Симпатии:
    2
    Добрый день
    Для OcStore 3.0.3.7 нет такой же инструкции?
    :)
     
  5. Tom

    Tom Специалист

    Сообщения:
    842
    Симпатии:
    290
    Отличие только в расширении файлов вместо .tpl это .twig
    И в выводе
    Код:
    {% if product.attribute_groups %}
      {% for attribute_group in product.attribute_groups %}
        {% for attribute in attribute_group.attribute %}
          <b>{{ attribute.name }}</b>: {{ attribute.text }}<br>
        {% endfor %}
      {% endfor %}
    {% endif %}
    
     
    Последнее редактирование: 28 сен 2024
    Allaur нравится это.
  6. Allaur

    Allaur Пользователь

    Сообщения:
    74
    Симпатии:
    2
    не работает так

    Вот так работает
    Код:
    {% if product.attribute_groups %}
    <ul>
    {% for attribute_group in product.attribute_groups %}
    {% for attribute in attribute_group.attribute %}
    <li>
    <small>{{ attribute.name }}</small> {{ attribute.text }}
    </li>
    {% endfor %}
    {% endfor %}
    </ul>
    {% endif %}
    
    А как вывести определённый атрибут?
    Есть например атрибут
    Объём
    attribute_id=37
    Вот только его вывести требуется...
    Группа одна на всех атрибутах
    attribute_group_id=7
     
  7. devagency

    devagency Новичок

    Сообщения:
    11
    Симпатии:
    4

    {% if product.attribute_groups %}
    <ul>
    {% for attribute_group in product.attribute_groups %}
    {% for attribute in attribute_group.attribute %}
    {% if attribute.attribute_id == 37 %}
    <li>
    <small>{{ attribute.name }}</small> {{ attribute.text }}
    </li>
    {% endif %}
    {% endfor %}
    {% endfor %}
    </ul>
    {% endif %}

    Приверно как то так, если что под себя скорректируете.
     
    Allaur нравится это.
  8. Blast

    Blast Продвинутый пользователь

    Сообщения:
    226
    Симпатии:
    80
    https://shop.opencart-russia.ru/main_attributes
     
  9. Allaur

    Allaur Пользователь

    Сообщения:
    74
    Симпатии:
    2
    Отлично всё работает. Благодарю сердечно :)