Magento - 如何从产品系列中排除某个类别?

时间:2012-10-26 08:42:01

标签: api magento product

我正在尝试创建一些功能,允许我根据类别和属性值等条件任意显示产品集合,并使其按预期工作,但我也希望能够排除某些类别这样我就可以包含'默认类别',然后排除我不想要的任何子类别。似乎没有像addCategoryFilter($ catid)这样的方法。

我找到了similar question that had been answered,但无法让它为我工作。

$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));

还有其他人有过做这种事的经历吗?

2 个答案:

答案 0 :(得分:1)

我认为没有一种本地的做法。但是你可以轻松制作一个扩展的快速模块

Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection

然后您可以创建自己的方法,并将 joinCondition 更改为适合

答案 1 :(得分: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)');