Перейти к содержанию
  • В связи с блокировкой банка QIWI оплата через сайт не возможна.
    Для оплаты и получения дополнений просьба писать в личные сообщения
    Admin*у
    После оплаты Вам так же будет доступно скачивание дополнений и обновлений на данном форуме

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


Рекомендуемые сообщения

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


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

Шаг первый

В контроллерах : (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 строчки атрибутов. 

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

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

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...