Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Trying to get Magento product images - only getting one image

Tags:

php

magento

I am trying to get an array of product image urls in Magento 1.7.0.2. Here is my current (slightly convoluted for example) code:

foreach ($_product->getMediaGalleryImages() as $_image) {
    $tmp = array(
        'image' => $this->helper('catalog/image')
                    ->init($this->getProduct(), 'thumbnail', $_image->getFile())
                    ->constrainOnly(true)
                    ->keepAspectRatio(true)
                    ->keepFrame(false)
                    ->resize(800, null),
        'thumb' => $this->helper('catalog/image')
                    ->init($this->getProduct(), 'thumbnail', $_image->getFile())
                    ->constrainOnly(true)
                    ->keepAspectRatio(true)
                    ->keepFrame(false)
                    ->resize(227, null),
        'label' => $this->htmlEscape($this->getImageLabel())
    );

    echo $tmp['image'] . '<br>';

    $all_imgs[] = $tmp;
}

foreach ($all_imgs as $blah) {
    echo $blah['image'] . '<br>';
    echo $blah['thumb'] . '<br>';
    echo $blah['label'] . '<br>';
}

I have two images, a.jpg and b.jpg. In the first foreach I am getting somefolder/a.jpg and somefolder/b.jpg. In the second foreach I am getting somefolder/b.jpg twice.

Somehow a.jpg is being replaced by b.jpg but I can't figure out why. The only thing I can think of is that something is being passed by reference rather than value but if that's the case I can't see where that is happening.

like image 920
Mr_Chimp Avatar asked Feb 01 '26 22:02

Mr_Chimp


1 Answers

Code

... = $this->helper('catalog/image')->...

returns an object, not string. And this object is singleton, that mean it has no instances and data is replaced.

Try to use

... = (string)$this->helper('catalog/image')->...
like image 132
Юрий Николаев Avatar answered Feb 03 '26 11:02

Юрий Николаев



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!