1

カテゴリページに返される商品を、現在のカテゴリとオプションのサブカテゴリでフィルタリングする方法を探しています。私がこれまでに見たすべての解決策は、「カテゴリ-aまたはカテゴリ-bにある製品を表示する」でした。

クエリパラメータ(例)として渡された追加のオプションのカテゴリIDで製品コレクションをフィルタリングするには、どのファイルを編集する必要があります?catfilter=32か?

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

同じID「30674」のエラーアイテム(Mage_Catalog_Model_Product)が/magento/lib/Varien/Data/Collection.php:373にすでに存在している場合、解決策が見つかりました。

$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 に答える