2

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

作为其中的一部分,我们希望从三个图像槽中获取产品的主图像,然后从媒体库中获取两个图像(理想情况下是随机的,但如果通过 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; ?>

请有人建议在主页上调用画廊图像的最佳方法。我们可以在集合构建中包含一些东西还是我们需要添加一个观察者。

提前致谢。

4

2 回答 2

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

于 2013-07-24T12:23:08.907 回答
0

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

于 2013-07-23T19:17:48.820 回答