Does anyone know if there is a way to run a product collection through a category filter twice? I have a ‘featured’ category, which is hidden, that I add products to so they’re available to grab as featured products. Currently I'm getting my product collection like this:
$_productCollection = Mage::getResourceModel('reports/product_collection')
->addAttributeToSelect('*')
->addAttributeToFilter('visibility', $visibility)
->addCategoryFilter('36');
$_productCollection->load();
This works fine on the homepage, but on the category pages, I need to filter the results by the current category first, and then by the featured category:
$_productCollection = Mage::getResourceModel('reports/product_collection')
->addAttributeToSelect('*')
->addAttributeToFilter('visibility', $visibility)
->addCategoryFilter('15')
->addCategoryFilter('36');
$_productCollection->load();
Unfortunately, it seems you can’t perform 2 category filters without editing core files, which I don’t want to do.
Any ideas how to get around this?
I was thinking I could maybe grab 2 product collections separately, one filtered by current category, and one by featured category, then using PHP's stristr find the products residing in both and use those, like
if (stristr($featProductCollection, $currProductCollection))
Anyone any ideas? I think I’d need to return maybe just the SKU’s of the products, maybe in a comma separated list. But I’m not sure of the best way to go about this, and it does seem a bit hacky.
The Catalog Input Type for Store Owner property of each attribute must be set to “Dropdown,” “Multiple Select,” or “Price.” To make the attributes filterable, the Use in Layered Navigation property of each must be set to either “Filterable (with results)” or “Filterable (no results).”
OK, actually sorted it myself with a bit of help from someone elsewhere:
$_productCollection = Mage::getResourceModel('reports/product_collection')
->addAttributeToSelect('*')
->addAttributeToFilter('visibility', $visibility)
->addCategoryFilter($_category)
->addAttributeToFilter('category_ids',array('finset'=>'36'))
$_productCollection->load();
Where $_category is the current category.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With