getGalleryImages在Magento主页中返回NULL

时间:2013-07-23 14:10:51

标签: magento magento-1.7

我们为客户端扩展了主页滑块,以便他们可以在此空间中展示产品。

作为其中的一部分,我们希望获得产品的主要图像,然后是媒体库中的两个图像(理想情况下是随机的,但如果是ID,则不是世界末尾)。

为了更好地理解,请查看我们到目前为止的截图: -

featprodslider

我们正在使用以下内容构建此模块的集合: -

$featured_products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('*')
->AddAttributeToFilter('featured', array('eq' => 1));

获取产品的主要图像没有问题,这与以下内容完美配合: -

<img class="gallery" src="<?php echo $this->helper('catalog/image')->init($product, 'small_image')->resize(225); ?>" alt="<?php echo $this->stripTags($this->getImageLabel($product, 'small_image'), null, true) ?>" />

如图所示,所有三个图像插槽都使用此主图像非常简单。

但是,当我们尝试调用getGalleryImages时,它总会返回NULL(例如): -

<?php if (count($this->getGalleryImages()) > 0): ?>
<?php foreach ($this->getGalleryImages() as $_image): ?>
<img class="gallery" src="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'thumbnail', $_image->getFile())->resize(100); ?>" width="100" height="100" alt="<?php echo $this->htmlEscape($_image->getLabel()) ?>" />
<?php endforeach; ?>
<?php endif; ?>

请有人建议在主页上调用图库图像的最佳方法。是否有我们可以包含在集合构建中的东西,或者我们是否需要添加观察者。

提前致谢。

2 个答案:

答案 0 :(得分:2)

最后设法让这个工作......

<?php $_images = Mage::getModel('catalog/product')->load($product->getId())->getMediaGalleryImages(); ?>    
<?php if($_images){?>            
    <?php $i=0; foreach($_images as $_image) if ($i++ < 5) { $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 } ?>

我们在if循环中添加了foreach语句,以确保我们最多只返回3个产品的媒体库图片。

与原始图像相比,最终结果如下: -

featprodslider2

答案 1 :(得分:0)

看起来您正在直接在块上调用getGalleryImages()。在产品对象上调用它(例如,$product->getGalleryImages()而不是$this->getGalleryImages())。