Допустим мы имеем коллекцию продуктов с уже установленными условиями и т.п.
И нам надо оставить в этой коллекции только те продукты, которые входят в какую-нибудь категорию.
На первый взгляд, нам мог бы помочь метод addCategoryFilter() у коллекции продуктов, но он сбросит уже выбранную ранее категорию, если таковая имеется.
Я предлагаю просто добавьть фильтр в Select таким способом:
if(!Mage::app()->getStore()->isAdmin()){
foreach(Mage::getModel('catalog/category')->getCollection() as $cat){
$cat->load($cat->getId());
if($cat->getData('name') == 'ИМЯ НУЖНОЙ КАТЕГОРИИ'){
$productIds = implode(',',$cat->getProductCollection()->getAllIds());
if(strlen($productIds)){
$collection->getSelect()->where("cat_index.product_id IN ($productIds)");
}}}}
Уточню, $collection – это уже готовая коллекция продуктов, вместо параметра «ИМЯ НУЖНОЙ КАТЕГОРИИ» можно использовать всё что угодно, а условие if(!Mage::app()->getStore()->isAdmin()) необходимо для того чтобы эти изменения не влияли на админку.
Похожие Magento-статьи:












