是否有人知道是否有办法通过类别筛选器两次运行产品集合?我有一个“特色”类别,这是隐藏的,我添加产品,以便他们可以抓取作为特色产品。目前,我的产品系列如下:
$_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(); 不幸的是,如果不编辑核心文件,您似乎无法执行两个类别筛选器,这是我不想做的。
有什么办法绕过这件事吗?
我想我可以分别抓取两个产品集合,一个按当前类别过滤,一个按特色类别进行过滤,然后使用PHP的stristr查找两者中的产品并使用它们,如下所示
if (stristr($featProductCollection, $currProductCollection))有什么想法吗?我想我需要返回的可能只是SKU的产品,也许在一个逗号分开的名单。但我不知道该怎么做才是最好的办法,这看起来确实有点麻烦。
发布于 2009-11-12 22:33:23
好吧,其实我是在其他人的帮助下解决了这个问题的:
$_productCollection = Mage::getResourceModel('reports/product_collection')
->addAttributeToSelect('*')
->addAttributeToFilter('visibility', $visibility)
->addCategoryFilter($_category)
->addAttributeToFilter('category_ids',array('finset'=>'36'))
$_productCollection->load();其中$_category是当前类别。
发布于 2010-11-19 12:38:42
不知道为什么,但这在1.4中不起作用,我的解决方案不是很漂亮,但在大型数据库上工作得很好:
$select = $collection->getSelect();
$select->where('(SELECT COUNT(1) FROM `catalog_category_product_index` AS `cat_index`
WHERE cat_index.product_id=e.entity_id AND cat_index.category_id
IN('.implode(',',$categories).') AND cat_index.store_id='.$collection->getStoreId().') >= '.count($categories));https://stackoverflow.com/questions/1725372
复制相似问题