0
votes

Requrement: We have a bunch of products with and without images. We only need to display products with images in the frontend.

What I did: I have tried almost all the SO resources like:

Filter products without images on Magento frontend

How can I find all products without images in Magento?

Hide Products without images magento

and their various combinations with no luck.. I think something changed in the new version of Magento. I am using version 1.8.1.0

Is somebody able to shed some lights here?

UPDATE: On my debugging, I found out that

->addAttributeToFilter('small_image', array('neq' => 'no_selection'))

really worked. But an error occurs in layered price filter. I was thinking this is not working earlier.I am getting the error similar to: Magento 1.7 price filter error (Column not found: 1054 Unknown column 'e.min_price' in 'where clause')...

According to Royw's answer to the above question, I believe, we need to edit the file: Mage/Catalog/Model/Layer/Filter/price.php

2

2 Answers

0
votes

You tried this?

->addAttributeToFilter('small_image', array('neq' => 'no_selection'))
0
votes

This can be done using Magento events. I added an observer for the event:

catalog_product_collection_load_before

which adds a filter to remove all the products without images when loading product collection. The observer is as follows:

public function filterProductsWithoutImages($observer) {
    if (isset($observer['collection'])) {
        $collection = $observer['collection'];
        $collection->addAttributeToFilter('small_image', array('neq' => "no_selection"));
        return $this;
    }
}

Here we need to disable "Use Flat Catalog Product". For that:

Admin > Configuration > Catalog > Frontend > Use Flat Catalog Product to "No"

Since this filtering is not compatible with the use of "Flat Catalog Product"

Product counts in search pages work fine with this.