我使用了这段代码:-
$category_id = 5;
$products = Mage::getModel('catalog/category')
->load($category_id)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('status',array(
'eq' => Mage_Catalog_Model_Product_Status::STATUS_DISABLED)
);
这是行不通的。它显示空结果。
请告诉我如何解决这个问题。
提前致谢。
最佳答案
这是我的解决方案:
- 首先获取产品合集
- 为禁用的产品添加过滤器
- 加入类别表
- 过滤特定类别 ID 的类别表
如果你想在 magento 之外运行脚本,这是一个工作示例:
require_once('app/Mage.php');
umask(0);
Mage::app();
// set category id
$categoryIds = [4]; // add child category id's if you want to support child categories also
$productCollection = Mage::getModel('catalog/product')->getCollection();
$productCollection->addAttributeToSelect('*');
$productCollection->addAttributeToFilter('status', Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
$productCollection->joinField('category_id','catalog/category_product','category_id','product_id=entity_id',null,'left')
->addAttributeToFilter('category_id', array('in' => $categoryIds))
->addAttributeToSelect('*');
$filteredProducts = $productCollection->getItems();
foreach ($filteredProducts as $product) {
echo $product->getId() . PHP_EOL;
}
magento 内部:
// set category id
$categoryIds = [4]; // add child category id's if you want to support child categories also
$productCollection = Mage::getModel('catalog/product')->getCollection();
$productCollection->addAttributeToSelect('*');
$productCollection->addAttributeToFilter('status', Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
$productCollection->joinField('category_id','catalog/category_product','category_id','product_id=entity_id',null,'left')
->addAttributeToFilter('category_id', array('in' => $categoryIds))
->addAttributeToSelect('*');
$filteredProducts = $productCollection->getItems();
如果你想支持多个类别,只需将 id 添加到数组 $categoryIds
如果您有任何问题,请随时添加评论。如果你让它工作,请让我知道并添加你的 magento 版本。谢谢
关于php - magento:显示禁用的产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34453156/