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

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

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


Как правило общепринято делать так

Шаг первый

В контроллерах : (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']),


Шаг второй

В файлах представления (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 } ?>


Казалось бы все прекрасно и работоспособно... но когда оказывается что в разных товарах разное количество атрибутов и товары в списке категорий начинают "плясать" , уж не говорю, когда этих самых атрибутов у товара штук 20  )))
И вот начинают сыпаться вопросы: А как вывести определенные атрибуты или атрибуты из определенной группы атрибутов и пр.... и пр....

Естественно, мудрые люди начинают давать советы и инструкции по вытаскиванию групп атрибутов или самих атрибутов по ID (писать их не стану, найти в сети их не сложно). 

Сегодня я Вам поведаю dfv как просто и эфективно вывести определенное количество атрибутов (будь их хоть 100 у товара)
Сразу предупреждаю, что никаких сортировок, выборок и прочего, тупо вывод определенного количества атрибутов.

Итак, первый шаг мы делаем аналогично вышенаписанному
А вот вместо кода во втором шаге - пишем вот такой код с счетчиком

<ul class="atr">
<?php if($product['attribute_groups']) { ?>
 <?php $i = 0; ?>
  <?php foreach($product['attribute_groups'] as $attribute_group) { ?>
  <?php if(!strpos($attribute_group['name'], "—")) {?> 
 <?php foreach($attribute_group['attribute'] as $attribute) { ?>
<li><span class="text"><?php echo $attribute['name']; ?></span><span class="page"><?php echo $attribute['text']; ?></span></li>
 <?php $i++;?>
 <?php if($i > 3) { ?>
 <?php break 2; ?>
 <?php } ?>
 <?php } ?>
 <?php } ?>
<?php } ?> 
<?php } ?>
</ul>


Обращаю внимание на эту строчку кода 

 <?php if($i > 3) { ?>

Вот тут как раз мы и задаем сколько мы будем отображать атрибутов... практика показала, что при указании 

<?php if($i > 3) { ?>

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

при 

<?php if($i > 2) { ?>

Выведется 3 строчки атрибутов. 

Надеюсь, что логика ясна . 

Ну а остальное - только ваша фантазия и умелая рука верстальщика, для придания всему этому красивого и гармонирующего с вашим шаблоном сайта вида.

До связи. С вами был Паша.




0 комментариев / Написать комментарий

Написать комментарий

Внимание: HTML не поддерживается! Используйте обычный текст!
    Бесполезно           Полезно
Captcha

Подпишитесь

Рассылаем только значимую информацию