有谁知道是否有办法通过类别过滤器运行产品集合两次?我有一个隐藏的“特色”类别,我将产品添加到其中,以便可以将它们作为特色产品获取。目前我正在收集这样的产品:
$_productCollection = Mage::getResourceModel('reports/product_collection')
->addAttributeToSelect('*')
->addAttributeToFilter('visibility', $visibility)
->addCategoryFilter('36');
$_productCollection->load();
这在主页上效果很好,但在类别页面上,我需要首先按当前类别过滤结果,然后按特色类别过滤结果:
$_productCollection = Mage::getResourceModel('reports/product_collection')
->addAttributeToSelect('*')
->addAttributeToFilter('visibility', $visibility)
->addCategoryFilter('15')
->addCategoryFilter('36');
$_productCollection->load();
不幸的是,如果不编辑核心文件,您似乎无法执行 2 个类别过滤器,而我不想这样做。
有什么办法可以解决这个问题吗?
我想我可以分别获取 2 个产品集合,一个按当前类别过滤,一个按特色类别过滤,然后使用 PHP 的 stristr 查找位于这两个产品集合中的产品并使用它们,例如
if (stristr($featProductCollection, $currProductCollection))
有人有什么想法吗?我想我可能需要返回产品的 SKU,也许是用逗号分隔的列表。但我不确定解决这个问题的最佳方法,而且它看起来确实有点老套。
最佳答案
好吧,实际上我自己在其他人的帮助下整理了它:
$_productCollection = Mage::getResourceModel('reports/product_collection')
->addAttributeToSelect('*')
->addAttributeToFilter('visibility', $visibility)
->addCategoryFilter($_category)
->addAttributeToFilter('category_ids',array('finset'=>'36'))
$_productCollection->load();
其中 $_category 是当前类别。
关于Magento - 如何使用 2 个类别过滤器过滤产品集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1725372/