Jump to content
ingenerks

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

Recommended Posts

Это работает, чтобы выводить в карточке продукта, в категориях, рекомендуемых, но не работает, чтобы вывести в корзине.

 

Может кто знает, как вывести атрибуты в корзине, при оформлении товара ?

Share this post


Link to post
Share on other sites

Уважаемые знатоки, прочитал тему от корки до корки да и в гугле не забанен, но  пробовал вывести определённые атрибуты из карточки как описано у Вас и тут ( https://opencartforum.com/topic/33811-%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%BE-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4-%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D1%85-%D0%B0%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%BE%D0%B2/ ) например, вывести атрибут в карточке товара получается без проблем, но как только я пытаюсь вывести таким же образом атрибуты в категории у меня опенкарт ругается на неопределённую переменную https://yadi.sk/i/3_AtexCf34ftPM , хотя я добавил уже в оба контроллера в массив продукта строчку https://yadi.sk/i/slk6Z90w34ftzn (хотя вроде определение есть в продукт.тпл). Вся надежда на Вас)

Share this post


Link to post
Share on other sites

Похвально,что в начале была хотя бы попытка найти решение.
 
В контроллер category.php  после  

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

добавить

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

в шаблон категории в нужном месте в виде списка атрибутов
 

<p>
<?php if ($product['attribute_groups']) { ?>
<?php foreach ($product['attribute_groups'] as $attribute_group) { ?>
<strong><?php echo $attribute_group['name']; ?>:</strong>
<?php foreach ($attribute_group['attribute'] as $attribute) { ?>
<span><?php echo $attribute['name']; ?>:</span> <?php echo $attribute['text']; ?><br />   
<?php } ?>
<?php } ?>
<?php } ?>
</p>

 или таблицей вариант 2

<p>
  <?php if ($product['attribute_groups']) { ?>
<div class="tab-pane" id="tab-specification">
  <table class="table table-bordered">
    <?php foreach ($product['attribute_groups'] as $attribute_group) { ?>
    <thead>
    <tr>
      <td colspan="2"><strong><?php echo $attribute_group['name']; ?></strong></td>
    </tr>
    </thead>
    <tbody>
    <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
    <tr>
      <td><?php echo $attribute['name']; ?></td>
      <td><?php echo $attribute['text']; ?></td>
    </tr>
    <?php } ?>
    </tbody>
    <?php } ?>
  </table>
</div>
<?php } ?>
</p>

или в одну строку,через слеш вариант 3

 

<p>
<?php if ($product['attribute_groups']) { ?>
<?php foreach ($product['attribute_groups'] as $attribute_group) { ?>
<strong><?php echo $attribute_group['name']; ?>:</strong>
<?php foreach ($attribute_group['attribute'] as $attribute) { ?>
<span><?php echo $attribute['name']; ?>:</span> <?php echo $attribute['text']; ?> /   
<?php } ?>
<?php } ?>
<?php } ?>
</p>
  • +1 1

Share this post


Link to post
Share on other sites

В менеджере дополнений обновить кеш модификаторов.

Share this post


Link to post
Share on other sites

еееееееееееесссс, спасибо большое, уже сколько вариантов перепробовал, но кеш не обновлял, спасибо огромное за ответ

Share this post


Link to post
Share on other sites

и если Вам не сложно подскажите ещё деталь: 
 

<?php if ($product['attribute_groups']) { ?>
<?php foreach ($product['attribute_groups'] as $attribute_group) { ?>



<?php foreach ($attribute_group['attribute'] as $attribute) { ?>
            <?php if(in_array($attribute['attribute_id'], array(20))) { ?>
                <?php echo $attribute['name']; ?>
                <?php echo $attribute['text']; ?>
            <?php }?>
        <?php }?>
	
<?php } ?>
<?php } ?>

сделал вывод по айди атрибута, но по итогу хочу получить таблицу такого плана:

<div class='group_attr'>
  <span>значение первого атрибута['text']</span> 
  <i>*</i>
  <span>значение второго атрибута['text']</span> 
  <i>=</i>
  <span>значение третьего атрибута['text']</span>
</div>
<div class='group_attr__second'>
  <span>{блок одного цвета - цвет зависит от значения атрибута['attribute_id']}</span> 
</div>

Подскажите, если не трудно, как ПРАВИЛЬНО это сделать а не перебирать кучей вызовов? Я так понимаю что в случае с цветом можно просто к спану последнему добавить определённый класс который зависит от значения атрибута 
 
 
 
Пока что придумал как решение такой вариант 

<div class='group_attr'>
<span>
<?php if ($attribute['attribute_id'] == 20) { ?> 
<?php echo $attribute['text']; ?> 
<?php }?> 
</span>
<i>*</i>
<span>
<?php if ($attribute['attribute_id'] == 19) { ?> 
<?php echo $attribute['text']; ?> 
<?php }?> 
</span>
<i>=</i>
<span>
<?php if ($attribute['attribute_id'] == 12) { ?> 
<?php echo $attribute['text']; ?> 
<?php }?> 
</span>
</div>
<div class='group_attr__second'>
<span class="color-<?php if ($attribute['attribute_id'] == 12) { ?> 
<?php echo $attribute['text']; ?> 
<?php }?> " >Цвет:{тут будет псевдоэлементом выводиться цвет в зависимости от класса}
</span>
 
</div>

но вот только это не верно с точки зрения кода потому как выводит только инфу с одного поля(((    разобрался - такой цикл выводит просто массив  и если я ?php echo $attribute['text']; ?>  таким образом вывожу нужные мне атрибуты то они становятся в том порядке в котором они обозначены в админке((

Edited by wildbee

Share this post


Link to post
Share on other sites

Народ добрый день, прочитал каждый пост так и не совсем понял как на ocStore 1.5.4.1 вывести атрибуты в карточке товара в два столбика, подскажите пожалуйста 

Share this post


Link to post
Share on other sites

Ребята, добрый всем день! Может подскажете как вывести те же атрибуты в карточке только на версии 3.0.2.0

То есть как мне преобразовать этот код для twig:

<?php foreach($product['attribute_groups'] as $attribute_group) { ?>
                <?php foreach($attribute_group['attribute'] as $attribute) { ?>
                    <?php if($attribute['attribute_id'] == 21) { ?>
                        <div class="attr-cat">Вес: <?php echo $attribute['text']; ?></div>
                    <?php } ?><?php } ?><?php } ?>

 

Спасибо за помощь.

PS php еще не до конца разобрал, а тут уже шаблонизатор встроили - вообще напряг(

Edited by Sharapov317
ошибка к в тексте

Share this post


Link to post
Share on other sites

Ну, в общем методом тыка получилось)

Вот кому нужно:

{% for attribute_group in product.attribute_groups %}
                {% for attribute in attribute_group.attribute %}
                {% if attribute.attribute_id == 21 %}
                <div class="attr-cat">Вес: {{ attribute.text }}</div>
                {% endif %}
                {% endfor %}
                {% endfor %}

Share this post


Link to post
Share on other sites

Всем, привет,

затронули полезную тему. 

Решил и у себя реализовать вывод атрибутов.

Однако, столкнулся с такой проблемой: поправил файлы, обновляю страницу - на секунду все отображается как надо - вместо описания характеристики, но через секунду опять все заменяется описанием.

Кто знает, что на это может влиять? Модификаторы, вроде бы эти файлы не затрагивают

modif.JPG

Share this post


Link to post
Share on other sites

Влиять может используемый фильтр....

Share this post


Link to post
Share on other sites
Только что, Tom сказал:

Влиять может используемый фильтр....

Браво!!!

Спасибо, провидец!

Share this post


Link to post
Share on other sites

Всем привет!

Подскажите пожалуйста в чем моя ошибка .

делаю как написано во всех примерах :

в файле category.php

                $data['attribute_groups'] = $this->model_catalog_product->getProductAttributes($this->request->get['product_id']);
                $data['products'][] = array(
                    'product_id'  => $result['product_id'],
                    'thumb'       => $image,
                    'name'        => $result['name'],
                    'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..',
                    'price'       => $price,
                    'special'     => $special,
                    'tax'         => $tax,
                    'minimum'     => $result['minimum'] > 0 ? $result['minimum'] : 1,
                    'rating'      => $result['rating'],
                    'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)

 

в файле category.twig

<h4><a href="{{ product.href }}">{{ product.name }}</a></h4>
                <p>{{ product.description }}</p>
                <p>{% if attribute_groups %}
                <div class="tab-pane" id="tab-specification">
                  <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>
                </div>
                {% endif %}</p>

 

В итоге все шрифты - иероглифы, атрибутов тоже не видать

 

Share this post


Link to post
Share on other sites

на ocstore 3 делал для себя так: если есть атрибуты есть, то выводятся все, что есть, если нет то выводится описание:

 

{% if product.attribute_groups %} 
  <ul class="list-unstyled">
  {% for attribute_group in product.attribute_groups %} 
  {% for attribute in attribute_group.attribute %} 
  <li><strong>{{ attribute.name }}</strong> : {{ attribute.text }}</li>
 {% endfor %} 
   {% endfor %} 
 </ul>
 {% else %} 
<p>{{ product.description }}</p>
  {% endif %}

Share this post


Link to post
Share on other sites

а еще есть такое

 

Share this post


Link to post
Share on other sites

Подскажите, пожалуйста, есть группа атрибутов 1, 2, 3 и т.п., в каждой группе находятся атрибуты 1.1, 1.2, 2.1, 3.1 и т.п

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

Код:

в файле category.php
 'attribute_groups' => $this->model_catalog_product->getProductAttributes($result['product_id']),

 

в файле category.tpl
  
                <?php if($product['attribute_groups']) { ?>
<table style="margin-bottom:10px;">
    <?php foreach($product['attribute_groups'] as $attribute_group) { ?>
    
    <tbody>
        <?php foreach($attribute_group['attribute'] as $attribute) { ?>
        <?php if(in_array($attribute['attribute_id'], array(15,16,19,25,29,40,41))){ ?>
        <tr>
            <td style="padding-right:10px; font-size: 11px"><?php echo $attribute['name']; ?></td>
            <td style="font-size: 11px"><?php echo $attribute['text']; ?></td>
        </tr>
        <?php } ?>
    </tbody>
    <?php } ?>
</table>
<?php } ?>
<?php } ?>

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.