我试图在我的商店中添加一些过滤器,但它们有一个令人讨厌的副作用。
假设我有产品类型 A 和 B。现在我只想显示颜色 = 蓝色/红色的 A。
$collection = Mage::getResourceModel('catalog/product_collection')
->setStoreId($this->getStoreId())
->addCategoryFilter($this)
->addAttributeToFilter(array(
array('attribute' => 'color', 'in' => array(4, 6)),
)
);
这可以解决问题,但是现在因为产品类型 B 没有分配给颜色的值(因为没有指定此属性),所以没有出现这种类型的产品。
我在论坛http://www.magentocommerce.com/boards/viewthread/178309上找到了这段代码,但它不起作用:
array('attribute' => 'color', 'is' => new Zend_Db_Expr('null'))
也没有:
array('attribute' => 'color', 'null' => true),
这实际上显示了具有分配属性但没有声明值的产品......
我还尝试添加:
array('attribute' => 'price', 'gteq' => 0),
因为我认为这些语句与“或”相关联(根据文档),但即使这样也只会添加具有分配属性的产品类型......
请注意,这些值来自下拉列表,但不确定是否重要。