2

クライアントのホームページ スライダーを拡張して、このスペースで製品を紹介できるようにしました。

その一環として、製品のメイン画像を取得する 3 つの画像スロットがあり、次にメディア ギャラリーから 2 つの画像を取得します (理想的にはランダムですが、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) ?>" />

上の画像に示すように、3 つの画像スロットすべてでこのメイン画像を使用するのは簡単です。

ただし、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 } ?>

製品のメディア ギャラリー画像を最大 3 つだけ返すようifに、ループにステートメントを含めました。foreach

次のように見える元の画像と比較した最終結果:-

featprodslider2

于 2013-07-24T12:23:08.907 に答える
0

getGalleryImages()ブロックで直接呼び出しているようです。製品オブジェクトで呼び出します (たとえば、の$product->getGalleryImages()代わりに$this->getGalleryImages())。

于 2013-07-23T19:17:48.820 に答える