Jump to content
Sign in to follow this  
1RONMAN

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

Recommended Posts

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

 

Сделал всё по этой теме: 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 товара из каждой категории?

 

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

Share this post


Link to post
Share on other sites

попробуйте

if( $k == 4 ) break;

после

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

 

попробуйте

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: 

Share this post


Link to post
Share on other sites
В 20.10.2015 в 13:29, snastik сказал:

 



 

И мне помогли) Спасибо!))):D

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.