2013-07-23 3 views
2

Мы расширили слайдер главной страницы для клиента, чтобы они могли размещать продукты в этом пространстве.getGalleryImages, возвращающий NULL на домашней странице Magento

Как часть этого, есть три слота изображения, где мы хотим получить основное изображение продукта, а затем два изображения из медиа-галереи (идеально случайным образом, но не конец света, если по 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

Наконец удалось получить эту работу ...

<?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

0

Похоже, вы звоните getGalleryImages() прямо на блок. Вызовите его на предмет продукта (например, $product->getGalleryImages() вместо $this->getGalleryImages()).

+0

Это все еще казалось, вернуть 'NULL'. При необходимости я могу предоставить больше кода. Благодарю. – zigojacko

Смежные вопросы