当多重选择的多个值用作Magento中的目录或目录搜索页面上的过滤器时,多个值或者在一起 - 即结果是具有任何这些属性的产品的并集。
我如何获得具有所选属性的产品集的交集 - 即只有那些具有所有选定属性的产品?
答案 0 :(得分:1)
在Magento的标准行为中,您只能过滤Lucasmus已经指出的一个值。 所以你似乎正在使用一些自定义或模块来编辑core / Mage / Catalog / Model / Layer / Filter / Attribute.php模型的行为。 还必须重写类Mage_Catalog_Model_Resource_Eav_Mysql4_Layer_Filter_Attribute,这正是您可以更改所要求的行为的类。 在该课程中,方法
applyFilterToCollection($filter,$value)
创建相应的SQL代码以进行过滤。 目前,您的模块或扩展可能使用OR表示法,或使用类似
的内容 $connection->quoteInto("{$tableAlias}.value IN (?)", $value)
,
因此它会搜索您要过滤的任何值。 要实现AND,您必须通过将$ value拆分为不同的部分并为每个单独的值使用where子句来重写此方法。 希望这是有道理的。