以下のコードを使用して、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();
無効になっている製品だけのカテゴリを見つけるために、このループに追加できる正しいコードについて誰でもアドバイスできますか。
フラットな製品構造やカテゴリ構造を使用していません。