删除magento中的类别

时间:2013-08-23 08:46:40

标签: magento categories

我想使用以下代码删除空类别:

`<?php
require "app/Mage.php";
umask(0);
Mage::app();
$categoryCollection = Mage::getModel('catalog/category')->getCollection()->addFieldToFilter('level',  array('gteq' => 2));
foreach($categoryCollection as $category) {
    if ($category->getProductCount() === 0) {
                               print_r ($category);
                           echo "<br><hr><br>";
        $category->delete();
    }
}
echo 'End!';
?>`

执行此代码后,它会在删除时崩溃。

print_r给出以下结果:

Mage_Catalog_Model_Category Object (
[_eventPrefix:protected] => catalog_category
[_eventObject:protected] => category
[_cacheTag:protected] => catalog_category
[_useFlatResource:protected] => 1
[_designAttributes:Mage_Catalog_Model_Category:private] => Array (
[0] => custom_design
[1] => custom_design_from
[2] => custom_design_to
[3] => page_layout
[4] => custom_layout_update
[5] => custom_apply_to_products
)
[_treeModel:protected] =>
[_defaultValues:protected] => Array (
)
[_storeValuesFlags:protected] => Array (
)
[_lockedAttributes:protected] => Array (
)
[_isDeleteable:protected] => 1
[_isReadonly:protected] =>
[_resourceName:protected] => catalog/category_flat
[_resource:protected] =>
[_resourceCollectionName:protected] => catalog/category_flat_collection
[_dataSaveAllowed:protected] => 1
[_isObjectNew:protected] =>
[_data:protected] => Array (
[entity_id] => 53
[level] => 4
[path] => 1/2/27/39/53
[position] => 3
[is_active] => 1
[is_anchor] => 1
[product_count] => 0
)
[_hasDataChanges:protected] => 1
[_origData:protected] => Array (
[entity_id] => 53
[level] => 4
[path] => 1/2/27/39/53
[position] => 3
[is_active] => 1
[is_anchor] => 1
)
[_idFieldName:protected] => entity_id
[_isDeleted:protected] =>
[_oldFieldsMap:protected] => Array (
)
[_syncFieldsMap:protected] => Array (
)
)

我做错了什么,我应该怎么做?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

<?php 
  require "app/Mage.php";
  umask(0);
  Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));
  $categoryCollection = Mage::getModel('catalog/category')->getCollection()->addFieldToFilter('level',  array('gteq' => 2));
foreach($categoryCollection as $category) {
   if ($category->getProductCount() === 0) {
       print_r ($category->entity_id);
       echo "<br><hr><br>";
       $category->delete();
    }
}
echo 'End!';
?>

您必须添加此行

Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));

你写这个代码print_r($ category);所以它重新运行阵列。那不是错误。

相关问题