Перейти к содержанию
1RONMAN

Как ограничить цикл foreach?

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

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

 

Сделал всё по этой теме: https://opencartforum.com/topic/23318-решено-вывод-товаров-из-подкатегорий-на-страни/

 

А если точнее - по примеру со stackoverflow, этому: http://stackoverflow.com/questions/16806652/opencart-sort-products-by-their-subcategory-on-the-category-page

 

Теперь необходимо разобраться как сделать так чтобы из каждой подкатегории выводилось не более 4-х товаров, иначе при большом количестве товаров будет каша.. :(

 

Если я ничего не путаю то за вывод списка подкатегорий отвечает этот кусок кода в файле category.tpl:

 <div class="category-list">

    <?php 
		
        if ( count( $categories ) <= 15 ) {

            foreach ( $categories as $k=>$category ) { 

                if( $k > 0 ) echo '<br /><br />';

                echo '<div class="product-filter" style="background:#222;padding:5px;padding-bottom:2px">';
                echo '<a href="' . $category['href'] . '" style="font-size:21px;text-decoration:none;"><h2 style="color:#eee;font-style:italic"><span style="color:#777;position:relative;bottom:2px">→ </span><span style="border-bottom:solid 1px #777;">' . $category['name'] . '</span>:</h2></a>';
                echo '</div>';
                echo '<hr style="border:none;border-top:solid 1px #eee"/>';
                echo '<div class="product-list">';

                foreach ( $products_all[ $category['category_id'] ] as $product) {
                    echo '<div>';
                    
                    if ( $product['thumb'] ) {
                        echo '<div class="image"><a href="' . $product['href'] . '"><img src="' . $product['thumb'] . '" title="' . $product['name'] . '" alt="' . $product['name'] . '" /></a></div>';
                    }
                    echo '<div class="name"><a href="' . $product['href'] . '">' . $product['name'] . '</a></div>';
                    echo '<div class="description">' . $product['description'] . '</div>';
                    if ( $product['price'] ) {
                        echo '<div class="price">';
                        if ( !$product['special'] ) { echo $product['price']; } 
                        else { echo '<span class="price-old">' . $product['price'] . '</span> <span class="price-new">' . $product['special'] . '</span>'; }
                        if ( $product['tax'] ) { echo '<br /><span class="price-tax">' . $text_tax . ' ' . $product['tax'] . '</span>'; }
                        echo '</div>';
                    }
                   
                    if ( $product['rating'] ) {
                        echo '<div class="rating"><img src="catalog/view/theme/default/image/stars-' . $product['rating'] . '.png" alt="' . $product['reviews'] . '" /></div>';
                    }
                    echo '<div class="cart">';
                    echo '<input type="button" value="' . $button_cart . '" onclick="addToCart(\'' . $product['product_id'] . '\');" class="button" />';
                    echo '</div>';
                    echo '<div class="wishlist"><a onclick="addToWishList(\'' . $product['product_id'] . '\');">' . $button_wishlist . '</a></div>';
                    echo '<div class="compare"><a onclick="addToCompare(\'' . $product['product_id'] . '\');">' . $button_compare . '</a></div>';
                    echo '</div>';
                   }
              echo '</div>';

            }
            

      ?>

А за вывод соответственно товаров код начиная с:

foreach ( $products_all[ $category['category_id'] ] as $product) {

В общем, вопрос такой, как ограничить в данном случае foreach чтобы выводилось только по 4 товара из каждой категории?

 

Заранее благодарю за любую информацию, надеюсь кто-нибудь поможет..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробуйте

if( $k == 4 ) break;

после

if( $k > 0 ) echo '<br /><br />';

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

foreach (array_slice($products_all[ $category['category_id'] ], 0, 4)  as $product) {};

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

попробуйте

if( $k == 4 ) break;

после

if( $k > 0 ) echo '<br /><br />';

Этот вариант ограничивает количество выводимых подкатегорий до 4 :)

 

 

foreach (array_slice($products_all[ $category['category_id'] ], 0, 4)  as $product) {};

 

 

Сработало!!! :) snastik, огромное Вам спасибо!!! :eek: 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.