سؤال

لدي الكود أدناه وأريد استبعاد معرف الفئة 70 من المجموعة، لكنني حاولت باستخدام:

$_productCollection->addAttributeToFilter('category_id', array('nin'=>'70'));

ولا يعمل

$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);  
هل كانت مفيدة؟

المحلول

يمكنك استخدام ال addCategoryIds() الطريقة لتمكين تصفية معرفات الفئات، مثل هذا:

$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();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top