2

カテゴリや属性の値などの基準に基づいて商品のコレクションを任意に表示し、これを意図したとおりに機能させる機能を作成しようとしていますが、特定のカテゴリを除外して、次に、「デフォルトのカテゴリ」を含めて、不要なサブカテゴリを除外することができます。このためのaddCategoryFilter($ catid)などのメソッドはないようです。

私は答えられた同様の質問を見つけましたが、それを私のために働かせることができませんでした。

$catId = 9;

/* I'm almost positive 'e' is the alias used for catalog_product_entity, check your
query with echo (string) $products->getSelect(); if it doesn't work */
$products->getSelect()->join(array('cats' => 'catalog_category_product'), 'cats.product_id = e.entity_id');
$products->getSelect()->where('cats.category_id', array('neq' => $catId));

他の誰かがこの種のことをした経験がありますか?

4

2 に答える 2

1

ネイティブなやり方はないと思います。しかし、拡張するクイックモジュールを簡単に作成できます

Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection

次に、独自のメソッドを作成し、joinConditionを適切に変更できます。

于 2012-10-26T15:56:44.523 に答える
0

私の解決策を確認してください:

$_productCollection = Mage::getModel('catalog/product')
        ->getCollection()
        ->addAttributeToSelect('*')
        ->addUrlRewrite();

Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($_productCollection);
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($_productCollection);

$_productCollection->load();
$_productCollection->getSelect()->join(array('cats' => 'catalog_category_product'), 'cats.product_id = e.entity_id');
$_productCollection->getSelect()->where('cats.category_id not in (41)');
于 2015-03-18T18:21:34.897 に答える