【发布时间】:2011-03-25 03:34:03
【问题描述】:
我正在尝试在我的商店中添加一些过滤器,但它们有一个令人讨厌的副作用。
假设我有产品类型 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),
因为我认为这些语句与“或”相关联(根据文档),但即使这样也只会添加分配了属性的产品类型...
请注意,这些值来自下拉列表,但不确定是否重要。
【问题讨论】:
-
你在哪里打电话? (方法调用中的“$this”是什么->addCategoryFilter($this))
-
我在 app/code/core/mage/catalog/model/category.php 的 getProductCollection() 中调用它
标签: attributes magento filter exists not-exists