我在这里遇到一些严重的Magento问题。如预期的那样:
$products = Mage::getModel('catalog/category')->load($category_id)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('status', array('eq' => 1));
将为我的$ category_id返回所有启用的产品。但是这:
$products = Mage::getModel('catalog/category')->load($category_id)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('status', array('eq' => 0));
不退回禁用的产品。我似乎找不到退回禁用产品的方法,也不知道为什么。
我已经试过了:
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
这本来应该有效,但显然已被弃用。
有谁知道如何将一个类别中的所有产品都启用和禁用?
最佳答案
不用担心,您只是被一个非常不寻常的常量定义所困住了^^。你试一试:
$products = Mage::getModel('catalog/category')->load($category_id)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter(
'status',
array('eq' => Mage_Catalog_Model_Product_Status::STATUS_DISABLED)
);
出于任何原因,Varien决定使用
STATUS_DISABLED
的值定义此2
常量,而不是使用更直观(且常用的)0
的值。
关于magento - Magento:按状态过滤产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6651028/