我使用随机代码在我们的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;
}
}
但这不起作用,只有占位符图像的产品仍会显示。
非常感谢任何帮助。
谢谢, 丹尼尔
答案 0 :(得分:3)
您正在添加' small_image'在集合已经加载后过滤,因此您的过滤器不将不再影响该集合。
除此之外你的OR滤镜对我来说很奇怪。假设' no_selection'也是一些占位符图片,然后您的过滤器会接受占位符图片,我认为您希望拒绝。
尝试使用AND过滤器:
$collection->addAttributeToFilter(
array('attribute' => 'small_image', 'neq' => '')
);
$collection->addAttributeToFilter(
array('attribute' => 'small_image', 'neq' => 'no_selection')
);