使用magento主页上的占位符图像禁用产品

时间:2012-02-16 10:32:06

标签: magento random

我使用随机代码在我们的magento商店主页上显示来自不同类别的产品。这非常有效。现在我想排除所有只有占位符图像的产品出现在主页上。我用以下代码尝试了它:

class Mage_Catalog_Block_Product_List_Random extends Mage_Catalog_Block_Product_List
{
    protected function _getProductCollection()
    {
        if (is_null($this->_productCollection)) {
            $categoryID = $this->getCategoryId();
            if($categoryID)
            {
              $category = new Mage_Catalog_Model_Category();
              $category->load($categoryID); // this is category id
              $collection = $category->getProductCollection();
            } else
            {
              $collection = Mage::getResourceModel('catalog/product_collection');
            }
            Mage::getModel('catalog/layer')->prepareProductCollection($collection);
            $collection->getSelect()->order('rand()');
            $collection->addStoreFilter();
            $numProducts = $this->getNumProducts() ? $this->getNumProducts() : 3;
            $collection->setPage(1, $numProducts)->load();

            $collection->addAttributeToFilter(
                array('attribute' => 'small_image', 'eq' => ''),
                array('attribute' => 'small_image', 'eq' => 'no_selection')
            );

            $this->_productCollection = $collection;
        }
        return $this->_productCollection;
    }
} 

但这不起作用,只有占位符图像的产品仍会显示。

非常感谢任何帮助。

谢谢, 丹尼尔

1 个答案:

答案 0 :(得分:3)

您正在添加' small_image'在集合已经加载后过滤,因此您的过滤器将不再影响该集合。

除此之外你的OR滤镜对我来说很奇怪。假设' no_selection'也是一些占位符图片,然后您的过滤器会接受占位符图片,我认为您希望拒绝

尝试使用AND过滤器:

$collection->addAttributeToFilter(
    array('attribute' => 'small_image', 'neq' => '')
);
$collection->addAttributeToFilter(
    array('attribute' => 'small_image', 'neq' => 'no_selection')
);