【问题标题】:Magento empty a category (1.5)Magento 清空一个类别 (1.5)
【发布时间】:2011-05-23 10:06:22
【问题描述】:

我想知道是否有一种快速的方法可以从特定类别中删除所有产品? 还是我坚持获取所有类别的产品,然后循环遍历并从每个类别中删除?

我打算在 cron 上运行它。

编辑:目前我正在使用 setCategoryIds() 但这似乎是一种非常低效的方式。

谢谢!

【问题讨论】:

    标签: magento categories


    【解决方案1】:

    这样做的方法确实是循环遍历每个产品;

    设置一个类别ID数组,$ids 然后使用 Mage_Catalog_Model_Product 中的 setCategoryIds($ids) 方法设置产品的类别 ID。

    如果您想要实际的代码,或者您正在寻找不同的方式,请告诉我。

    祝你好运。

    【讨论】:

    • 感谢您的回答。我实际上正在使用 setCategoryIds(),虽然这似乎是一种清空类别的非常费力的方法,我希望有一种更快的方法可以使用。 (我也许应该提到这一点。我会编辑这个问题。)
    【解决方案2】:

    我不知道 cron,但您可以使用导入/导出功能。 或者,根据这些类别中的产品数量,您可以使用管理员产品网格中的批量处理功能。我有一个模块可以按类别过滤此网格:如果您想要它,请告诉我,我会上传到某个地方。 糟糕,批量属性更新无法使用该类别。但是导入/导出就可以了。

    【讨论】:

    • 谢谢,但这确实需要通过 cron 作业运行
    【解决方案3】:

    这未经测试,但应该这样做:

    $category = Mage::getModel("catalog/category")->load($id);
    $products = $category->getProductCollection();
    foreach($products as $product) {
        $productCategories = $product->getCategoryIds();
        $index = array_search($productCategories, $id);
        unset($productCategories[$index]);
        $product->setCategoryIds($productCategories);
        $product->save();
    }
    

    【讨论】:

    • 谢谢(虽然有轻微的错字:$category->getCategoryIds(); 应该是 $product->getCategoryIds();)
    猜你喜欢
    • 2011-11-20
    • 1970-01-01
    • 2012-09-24
    • 2013-10-14
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多