1

我正在寻找一种方法来过滤当前类别和可选子类别在类别页面上返回的产品。到目前为止,我看到的每个解决方案都是“展示属于 a 类或 b 类的产品”。

我需要编辑哪个文件以通过作为查询参数(例如?catfilter=32)传递的附加可选类别 ID 过滤产品集合?

4

2 回答 2

6

看这里:http: //vibrantdrive.com/how-to-filter-magento-products-using-2-or-more-category-filters/

获得第 4 类和第 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');

获得第 4 类或第 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');
于 2012-09-19T21:07:41.810 回答
1

关于/magento/lib/Varien/Data/Collection.php:373中已存在具有相同ID“30674”的错误项目(Mage_Catalog_Model_Product),我找到了解决方案:

$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. 设置不同
  2. 不要在 select 子句中包含 category_id 字段
于 2014-02-21T02:54:21.903 回答