user1498426
user1498426

Reputation: 33

Magento Custom Image Attribute from Related Products

So from the product view i am getting related products to display. For reasons i wont get into i need to display the image of the related product but it has to be a custom image attribute. So i have created a custom image attribute called colour_swatch and i need to access it and display it on screen. I have done some reading on the issue and have not managed to find a solution to fit my needs.

So here is my code:

<?php foreach($this->getItems() as $_item): ?>
    <div class="eachProductRelated">
        <a href="<?php echo $_item->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_item->getName()) ?>" class="product-image">
            <img src="<?php echo $this->helper('catalog/image')->init($_item, 'colour_swatch') ?>"
                 width="20px" alt="<?php echo $this->htmlEscape($_item->getName()) ?>"/>
        </a>
    </div>
<?php endforeach ?>

If we replace colour_swatch with small image that of course will work. I have read that you can't access a custom image attribute if you aren't calling it directly from the product view. And a lot of the solutions i have seen seem to be massively overkill, Surely there is a simpler solution???

Might be worth telling you that i get the following error message:

a:5:{i:0;s:25:"Image file was not found.";i:1;s:4015:"#0 /Users/Frank/Sites/bosideng/app/code/core/Mage/Catalog/Helper/Image.php(163): Mage_Catalog_Model_Product_Image->setBaseFile(NULL)

Is it possible that i have to do some kind of if no_selected check ?

Upvotes: 1

Views: 2134

Answers (4)

Rohit
Rohit

Reputation: 1

If Flat Catalog Category and Use Flat Catalog Product is set to Yes, then you can add the specific attributes to the collection

Like

$collection = Mage::getResourceModel('catalog/product_collection');
$collection->addAttributeToSelect('*');
$collection->addAttributeToSelect('attributes_name');

This is working perfect for me

Upvotes: 0

user1498426
user1498426

Reputation: 33

I have figured out this issue and pardon my French but it was a ridiculous and a stupid oversight by Magento.

When setting up your new custom image attribute you must set 'Use In Product Listing' to yes in the drop down before you select the attribute type 'Media Image' because guess what!? When you select Media Image, Magento hides that option.

Credit to this guy whose post i found after ages of searching: http://thedistance.co.uk/journal/2011-10/missing-magento-media-images

Upvotes: 2

Serhiy Korohoda
Serhiy Korohoda

Reputation: 16

For those of you creating custom image type using installer, add the following to make image visible on both listing and view pages:

$this->addAttribute(Mage_Catalog_Model_Product::ENTITY, 'colour_swatch', array(
    'group'             => 'Images',
    'type'              => 'varchar',
    'frontend'          => 'catalog/product_attribute_frontend_image',
    'label'             => 'Color Swatch',
    'input'             => 'media_image',
    'class'             => '',
    'source'            => '',
    'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
    'visible'           => true,
    'required'          => false,
    'default'           => '',
    'used_in_product_listing' => true,
));

Upvotes: 0

Vishal
Vishal

Reputation: 900

Hello i think you add new image url in custom image attribute then call may be help you

<img src="<?php echo Mage::getModel('catalog/product')->load($product)->getData('colour_swatch'); ?>"  

Upvotes: 0

Related Questions