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 $i=0; foreach($_images as $_image){ $i++; ?>

至...

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

循环中的此if语句foreach确保循环中最多只返回三个。

(我不知道为什么,因为在我看来,如果值大于 5)。

于 2013-07-24T12:28:15.817 回答
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 回答