Примочки в Опенкарт (опробовано на OcStore)

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

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

В файле catalog\controller\product\category.php

после

$this->data['products'][] = array(
					'product_id'  => $result['product_id'],
					'thumb'       => $image,
					'name'        => $result['name'],
					'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..',

добавить

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


в файле catalog\view\theme\default\template\product\category.tpl

добавляем

<div class="new">
					  
  <!-- =====================Атрибут==================== -->

         
   		<?php if($product['attribute_groups']) { ?>
			<table>
				<?php foreach($product['attribute_groups'] as $attribute_group) { ?>
				 <?php if ($attribute_group['name'] == 'new') { ?>
				<thead><!--названия групп-->
				<tr>
					<td colspan="2"><?php echo $attribute_group['name']; ?></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>
			<?php } ?>
   <?php } ?>

   <!-- =====================Атрибут конец==================== -->
   
                             </div>

Выводим атрибуты в карточку товара
Просто добавляем по следующему принципу
<!-- =====================Атрибуты название такое то==================== -->

         
<?php if ($attribute_groups) { ?>
    <?php foreach ($attribute_groups as $attribute_group) { ?>
        <?php if ($attribute_group['name'] == 'название такое то') { ?>
        <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
          <?php echo html_entity_decode($attribute['text']); ?><br />
        <?php } ?>
      <?php } ?>
    <?php } ?>
  <?php } ?>
   <!-- =====================Атрибуты конец==================== -->

Теперь прячем в карточке товара те атрибуты, которые нам не нужно выводить(дублировать) во вкладке характеристики
<!--========************* Прячем атрибуты PDF************* ========-->
    <table class="attribute">
      <?php foreach ($attribute_groups as $attribute_group) { ?>
   
        <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
		  <?php if($attribute['attribute_id'] <> 18) { ?>
	    <?php if($attribute['attribute_id'] <> 19) { ?>
		 <?php if($attribute['attribute_id'] <> 20) { ?>
		 <?php if($attribute['attribute_id'] <> 21) { ?>
		 <?php if($attribute['attribute_id'] <> 22) { ?>
        <tr>
          <td><?php echo $attribute['name']; ?></td>
          <td><?php echo $attribute['text']; ?></td>
        </tr>
			   <?php } ?>
	  <?php } ?>
	 <?php } ?>
  <?php } ?>
 <?php } ?>
 <!--========*****************  Прячем атрибуты PDF *****************конец========-->

В этом примере видночто это правило выводит только течто не перечисленны в этом блоке.Для этого нам нужно знать ID атрибута(смотреть в админке, после создания атрибута).
Принцип следующий, если нужно добавить ещё смотрим ID и добавляем

<?php if($attribute['attribute_id'] <> А здесь id атрибута который прячем { ?>
 ..........
 ....
 ....
  <?php } ?>
Поделиться
Запись добавлена • 12497 просмотров

8 комментариев

avatar
Скриншот будет?
avatar
зачем скриншот? пример на рабочем магазине: matrasklass.ru/matrasy/
avatar
На всякий случай скрин.
вывод атрибутов в категории opencart
avatar
Как зачем? Сайты бывает закрываются. Не сделал скриншота сегодня — нечего показать в портфолио завтра ))
avatar
Только вместо этого ужаса:
<?php if($attribute['attribute_id'] <> 18) { ?>
            <?php if($attribute['attribute_id'] <> 19) { ?>
                 <?php if($attribute['attribute_id'] <> 20) { ?>
                 <?php if($attribute['attribute_id'] <> 21) { ?>
                 <?php if($attribute['attribute_id'] <> 22) { ?>


Пишем аккуратный код:

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


Или просто перечисляем ID'ы аттрибутов которые хотим выводить:

 <?php if(in_array($attribute['attribute_id'], array(1, 2, 3, 5, 6, 7))) { ?>
avatar
Это было написанно черт знает когда, но может кто поможет с моим вопросом?

Вот тут вот темка
avatar
Пользовался этим модулем, без хардкода в коде dev-os.ru/product/module-attribute-ext.html
avatar
Ребята а как отобразить в карточке в «Сопутствующие товары:» в категориях и модулях вывел и все отлично а вот здесь не получается ни как… Заранее спасибо!

Оставить комментарий

Для добавления комментариев, вы должны войти или зарегистрироваться