Magento:按状态过滤产品

Tri*_*ign 22 collections status filter magento

我在这里遇到了一些严重的Magento问题.正如预期的那样:

$products = Mage::getModel('catalog/category')->load($category_id)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('status', array('eq' => 1));
Run Code Online (Sandbox Code Playgroud)

将为$ category_id返回所有已启用的产品.不过这个:

$products = Mage::getModel('catalog/category')->load($category_id)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('status', array('eq' => 0));
Run Code Online (Sandbox Code Playgroud)

不归还残疾人产品.我似乎无法找到返回残疾产品的方法,我不知道为什么.

我试过这个:

Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
Run Code Online (Sandbox Code Playgroud)

这本来是有效的,但显然可能已被弃用.

有谁知道如何获得一个类别,启用和禁用的所有产品?

Jür*_*len 45

别担心,你只是被一个非常不寻常的恒定定义^^困住了.试一试:

$products = Mage::getModel('catalog/category')->load($category_id)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter(
    'status',
    array('eq' => Mage_Catalog_Model_Product_Status::STATUS_DISABLED)
);
Run Code Online (Sandbox Code Playgroud)

无论出于何种原因,Varien决定STATUS_DISABLED使用值来定义此常量2,而不是更直观(和常用)的值0.

  • 救命稻草!禁用= 2.谁会砸它. (3认同)