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

Тема в разделе "Дизайн, оформление и шаблоны", создана пользователем Habro, 7 июл 2015.

  1. Habro

    Habro Новичок

    Сообщения:
    15
    Симпатии:
    0
    Приветствую! Есть небольшая проблема в отображении вывода атрибутов на странице карточки товара. Если присваиваю несколько атрибутов одной группы одному товару, то второй атрибут уходит в таблице под группу атрибутов
    HTML:
    <tr>
    <td><strong>Цвет</strong></td>
    <td>Красный</td>
    </tr>
    
    <tr>
    <td><strong>Вкус</strong></td>
    <td>Клубника</td>
    </tr>
    
    <td>Цитрус</td>
    </tr>
    
    а нужно чтобы было так в последнем куске
    HTML:
    <tr>
    <td></td>
    <td>Цитрус</td>
    </tr>
    
    получается что когда несколько атрибутов в группе, то не хватает тегов.
    Как это добавить?
    Вот проблемный кусок кода

    PHP:
    <?php if ($attribute_groups) { ?>
    <div class="tab-pane" id="tab-specification">
    <table class="table table-bordered">
    <?php foreach ($attribute_groups as $attribute_group) { ?>
    <tr>
    <td><strong><?php echo $attribute_group['name']; ?></strong></td>
    <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
    <td><?php echo $attribute['name']; ?></td>
    </tr>
    <?php ?>
    <?php 
    ?>
    </table>
    </div>
    <?php ?> 
     
  2. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.566
    Симпатии:
    428
    А не так ли должно это выглядеть???
    Код:
                <?php if ($attribute_groups) { ?>
                <div class="tab-pane" id="tab-specification">
                  <table class="table table-bordered">
                    <?php foreach ($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 } ?>
    
     
  3. Habro

    Habro Новичок

    Сообщения:
    15
    Симпатии:
    0
    Дело в том, что колонка с текстом атрибута мне не нужна. Или как сделать чтобы если в группе есть несколько атрибутов, то они выводились бы через запятую. Блин, делаю изменения в product.tpl, чищу кэш, а изменений не видно :( Когда меняю другие файлы, все ок.
     
    Последнее редактирование: 7 июл 2015
  4. Romans

    Romans Administrator Команда форума

    Сообщения:
    1.340
    Симпатии:
    692
    forum.opencart-russia.ru/threads/nachalo-raboty.11/ Почитайте про модификаторы.
     
  5. Habro

    Habro Новичок

    Сообщения:
    15
    Симпатии:
    0
    Да, действительно нужно было обновить кэш модификатора, спасибо. А как сделать вывод атрибутов через запятую, если их больше одного?
     
  6. Ravilr

    Ravilr Специалист

    Сообщения:
    3.055
    Симпатии:
    851
    вы лучше скрин покажите как надо. А то не очень понятно как через запятую нужно...
     
  7. zvo

    zvo Новичок

    Сообщения:
    11
    Симпатии:
    1
    Опенкарт2
    Нужно добавить атрибут в карточку товара (справа) там где цена. Код атрибута attribute_id=13 назв групы - SZS
    Иду в catalog/view/theme/default/template/product и вставляю
    (перед <?php if ($attribute_groups) { ?>)
    в product.tpl ( код:

    В описании товара вывожу кодом ...
    Код:
    <!-- Выводим атрибут -->
      <?php if($attribute_groups){?>
        <?php foreach($attribute_groups as $attribute_group){?>
          <?php if($attribute_group['name']=='SZS'){?>
            <?php foreach($attribute_group['attribute']as $attribute){?>
              <span><?php echo $attribute['name'];?></span><?php echo html_entity_decode($attribute['text']);?><br/>
            <?php }?>
          <?php }?>
        <?php }?>
      <?php }?>
      <!-- Выводим атрибут Конец -->
    
    Работаеь... НО!!!

    НО НУЖНО СПРАВА ТАМ ГДЕ ЦЕНА!....
    Не знаю как сделать ... Нужна помощь...
     
    Последнее редактирование: 5 янв 2016
  8. Vlad

    Vlad Эксперт

    Сообщения:
    3.902
    Симпатии:
    938
    в смысле не знаете. Не знаете куда вставить чтобы было справа от цены товара?
     
  9. zvo

    zvo Новичок

    Сообщения:
    11
    Симпатии:
    1
    все правильно поняли ... не могу сообразить и не хватает знаний...
     
  10. Vlad

    Vlad Эксперт

    Сообщения:
    3.902
    Симпатии:
    938
    ну это же обычный css!!

    Найти
    Код:
                <?php if (!$special) { ?>
                <li>
    и ниже цену заменить на
    Код:
                  <h2 style="float:left"><?php echo $price; ?></h2>
                  <div> тут атибуты </div>
                 <div class="clearfix"></div>
     
  11. multimen

    multimen Новичок

    Сообщения:
    28
    Симпатии:
    2
    Нужна помощь, подскажите как вывести не атрибуты определенной группы, а определенный атрибут или несколько атрибутов.

    нашел в инете вот это но я совсем не понимаю что к чему, и вставив у меня сайт вызывает ошибку, подскажите как правильно прописать

    $this->data['products'][]= array(
    ....
    'attribute_groups'=> $this->model_catalog_product->getProductAttributes($result['product_id']),
    ...
    <tableclass="attribute">
    <?php foreach($attribute_groups as $attribute_group){?>

    <?php foreach($attribute_group['attribute']as $attribute){?>

    <?php if(!in_array($attribute['attribute_id'], array(19,20,21,22))){?>

    <tr>
    <td><?php echo $attribute['name'];?></td>
    <td><?php echo $attribute['text'];?></td>
    </tr>
     
  12. RoS

    RoS Специалист

    Сообщения:
    221
    Симпатии:
    215
    это для версии 1.5

    Вам нужно в \catalog\controller\product\product.php найти
    PHP:
    $data['products'][] = array(
    и во внутрь вставить
    PHP:
    'attribute_groups'=> $this->model_catalog_product->getProductAttributes($result['product_id']),
    а в файл catalog\view\theme\default\template\product\product.tpl
    в нужное место вставить
    PHP:
    <table class="attribute">
          <?php foreach ($attribute_groups as $attribute_group) { ?>

            <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
                 
    <?php if(in_array($attribute['attribute_id'], array(19202122))) { ?>

            <tr>
              <td><?php echo $attribute['name']; ?></td>
              <td><?php echo $attribute['text']; ?></td>
            </tr>
    <?php }?>
        <?php }?>
      <?php }?>
    </table>

    Где 19, 20, 21, 22 = id атрибутов
     
    Последнее редактирование: 17 янв 2016
    Ален и multimen нравится это.
  13. multimen

    multimen Новичок

    Сообщения:
    28
    Симпатии:
    2
    <!-- Выводим атрибут -->
    <?php if($attribute_groups){?>
    <?php foreach ($attribute_groups as $attribute_group) { ?>

    <?php foreach ($attribute_group['attribute'] as $attribute) { ?>

    <?php if(in_array($attribute['attribute_id'], array(15, 12))) { ?>

    <span class="marked"><?php echo $attribute['name']; ?></span><?php echo $attribute['text']; ?></span><br />
    <?php }?>
    <?php }?>
    <?php }?>
    <?php }?>

    <!-- Выводим атрибут Конец -->
    Смущает одно, в коде поменял немного (отметил красным) и не знаю, как правильнее сделать

    <?php if($attribute_groups){?> или <?php if($attribute){?>
     
    KIVIn нравится это.
  14. Ален

    Ален Эксперт

    Сообщения:
    2.052
    Симпатии:
    630
    все правильно
     
    KIVIn и RoS нравится это.
  15. KIVIn

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

    Сообщения:
    38
    Симпатии:
    5
    На 2.2 заработал этот способ, Спасибо очень помог. А как вывести туда же "Вес" из данных товара?

    Вопрос снят, вот решение, спасибо автору
    http://forum.opencart-russia.ru/threads/ves-i-razmer-v-kartochke-tovara.527/#post-18009
     
    Последнее редактирование: 31 мар 2016