0

現在、以下を使用して、製品のメディア ギャラリーの画像を Magento ホームページにロードしています。

<?php $_images = Mage::getModel('catalog/product')->load($product->getId())->getMediaGalleryImages(); ?>    
<?php if($_images){?>            
    <?php $i=0; foreach($_images as $_image){ $i++; ?>
        <img class="gallery" src="<?php echo $this->helper('catalog/image')->init($product, 'thumbnail', $_image->getFile())->resize(255); ?>" alt="<?php echo $this->htmlEscape($_image->getLabel());?>" title="<?php $this->htmlEscape($_image->getLabel());?>" />
    <?php } ?>
<?php } ?>

これは現在、製品のすべてのメディア ギャラリー イメージを取得しますが、取得したいのは最大 3 つだけです。上記を 3 つだけ取得するように書き直す方法を教えてください。

foreachループを壊すことがこれに対する最善のアプローチであるかどうかはわかりません。

<?php if (++$i == 3) break; ?>

しかし、これは最大3つしか返さないという点で一貫していないようです。

前もって感謝します。

4

2 に答える 2

0

ループの前に PHP のネイティブ array_slice 関数を使用します。以下は最大 3 を返すため、不要な要素をループして時間を無駄にすることはありません。

array_slice($_images, 0, 3)

http://php.net/manual/en/function.array-slice.php

于 2016-04-02T14:31:29.820 に答える
0

アイデアをいじって、何かを機能させることができました:-

変化:-

<?php $i=0; foreach($_images as $_image){ $i++; ?>

に...

<?php $i=0; foreach($_images as $_image) if ($i++ < 5) { $i++; ?>

ループ内のこのifステートメントにより、foreachループ内で最大 3 つのみが返されることが保証されます。

(値が5より大きい場合のように見えるので、理由はわかりません)。

于 2013-07-24T12:28:15.817 に答える