Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


1RONMAN

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 товара из каждой категории?

 

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

Надіслати
Поділитися на інших сайтах


 

попробуйте

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: 

Надіслати
Поділитися на інших сайтах


  • 3 years later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.