Magento 1.7 Filter products by multiple categories

大兔子大兔子 提交于 2020-01-11 07:23:06

问题


I am looking for a way to filter the products being returned on a category page by the current category AND an optional sub-category. Every solution I have seen so far has been 'show products that are in category-a OR category-b'.

Which file do I need to edit to filter a product collection by an additional, optional category id passed as a query parameter (e.g. ?catfilter=32)?


回答1:


look here: http://vibrantdrive.com/how-to-filter-magento-products-using-2-or-more-category-filters/

To get products in Category 4 AND category 5

$_productCollection = Mage::getModel('catalog/product')
 ->getCollection()
 ->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id = entity_id', null, 'left')
 ->addAttributeToSelect('*')
 ->addAttributeToFilter('category_id', array(
     array('finset' => '4'),
     array('finset' => '5'))
 )
 ->addAttributeToSort('created_at', 'desc');

To get product in Category 4 OR category 5

$_productCollection = Mage::getModel('catalog/product')
 ->getCollection()
 ->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id = entity_id', null, 'left')
 ->addAttributeToSelect('*')
 ->addAttributeToFilter('category_id', array(
     array('finset' => array('4', '5')),
 )
 ->addAttributeToSort('created_at', 'desc');



回答2:


About error Item (Mage_Catalog_Model_Product) with the same id "30674" already exist' in /magento/lib/Varien/Data/Collection.php:373, I found the solution:

$conditions = array();
foreach ($categoryIds as $categoryId) {
    if (is_numeric($categoryId)) {
        $conditions[] = "{{table}}.category_id = $categoryId";
    }
}
$collection->distinct(true)
    ->joinField('category_id', 'catalog/category_product', /* 'category_id' */null, 
         'product_id = entity_id', implode(" OR ", $conditions), 'inner');
  1. set distinct
  2. don't include the category_id field in select clause


来源:https://stackoverflow.com/questions/12498556/magento-1-7-filter-products-by-multiple-categories

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!