Comment filtrer la catégorie lorsque je charge depuis Mage_Catalog_Model_Category ?
-
13-12-2019 - |
Question
J'ai le code ci-dessous et je souhaite exclure une catégorie id 70 de la collection, mais j'ai essayé avec :
$_productCollection->addAttributeToFilter('category_id', array('nin'=>'70'));
et ça ne marche pas
$category = new Mage_Catalog_Model_Category();
$category->load();
$_productCollection = $category->getProductCollection();
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($_productCollection);
$_productCollection->addAttributeToFilter('visibility',4)->addAttributeToSelect('*');
// $_productCollection->addAttributeToFilter('category_id', array('nin'=>'70'));
$_productCollection->getSelect()->order('RAND()');
$_productCollection->addAttributeToFilter('status',1);
$_productCollection->getSelect()->limit(20);
La solution
Vous pouvez utiliser le addCategoryIds()
méthode, pour activer le filtrage des identifiants de catégorie, comme ceci :
$productCollection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToSelect('*')
->addCategoryIds()
->addAttributeToFilter('category_id', array(array('nin'=>'70')))
->addAttributeToFilter('visibility', 4)
->addAttributeToFilter('status', 1);
Mage::getSingleton('cataloginventory/stock')
->addInStockFilterToCollection($productCollection);
$productCollection->getSelect()
->order('RAND()')
->limit(20);
$productCollection->load();
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange