我们为客户端扩展了主页滑块,以便他们可以在此空间中展示产品。
作为其中的一部分,我们希望获得产品的主要图像,然后是媒体库中的两个图像(理想情况下是随机的,但如果是ID,则不是世界末尾)。
为了更好地理解,请查看我们到目前为止的截图: -
我们正在使用以下内容构建此模块的集合: -
$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; ?>
请有人建议在主页上调用图库图像的最佳方法。是否有我们可以包含在集合构建中的东西,或者我们是否需要添加观察者。
提前致谢。
答案 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个产品的媒体库图片。
与原始图像相比,最终结果如下: -
答案 1 :(得分:0)
看起来您正在直接在块上调用getGalleryImages()
。在产品对象上调用它(例如,$product->getGalleryImages()
而不是$this->getGalleryImages()
)。