Magento - 查找仅包含残疾产品的类别

时间:2013-09-12 10:42:14

标签: magento

我使用下面的代码循环遍历Magento(CE 1.7.2)中的所有“底层”类别,以查找(并选择删除)空类别。

<?php
require_once $_SERVER['DOCUMENT_ROOT']."/app/Mage.php";
Mage::app('admin');

$categoryCollection = Mage::getModel('catalog/category')->getCollection()
   ->addFieldToFilter('level', array('gteq' => 5))
   ->addAttributeToSelect('name')
;

foreach($categoryCollection as $category) {
   if ($category->getProductCount() === 0) {
       print "delete ".$category['name']. "<br>" ;
       //$category->delete();
   }
}
?>

我想修改代码,或者查找仅包含禁用产品的类别。

我尝试了以下但是它运行了5分钟然后超时 - 我怀疑它没有做我认为它应该做的事情。

foreach($categoryCollection as $category)
{
$products = Mage::getModel('catalog/category')->load($category)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter(
    'status',
    array('eq' => Mage_Catalog_Model_Product_Status::STATUS_DISABLED)
);
    $count = $products->getSize();

任何人都可以建议我可以添加到此循环的正确代码,以查找仅禁用产品的类别。

我不使用扁平产品或类别结构。

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。

由于某种原因,Mage_Catalog_Model_Product_Status :: STATUS_DISABLED不起作用 - 但是,STATUS_ENABLED会这样做。因此,通过计算每个类别启用了多少产品,如果计数为0,我知道猫是空的或只有禁用的产品。

require_once $_SERVER['DOCUMENT_ROOT']."/app/Mage.php";
Mage::app('admin');

$categoryCollection = Mage::getModel('catalog/category')->getCollection()
   ->addFieldToFilter('level', array('gteq' => 5))
   ->addAttributeToSelect('name')
;
foreach($categoryCollection as $category)
{


$products = Mage::getModel('catalog/category')->load($category->getId())
->getProductCollection()
->addAttributeToSelect('*') //whatever attributes you want to get here
->addAttributeToFilter(
    'status',
    array('eq' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED)            
);

$count = $products->getSize();

   if ($count == 0) {
       print "delete". $category['name'] ."<br>" ;        
       $category->delete();  
    }
}