【发布时间】:2011-05-23 10:06:22
【问题描述】:
我想知道是否有一种快速的方法可以从特定类别中删除所有产品? 还是我坚持获取所有类别的产品,然后循环遍历并从每个类别中删除?
我打算在 cron 上运行它。
编辑:目前我正在使用 setCategoryIds() 但这似乎是一种非常低效的方式。
谢谢!
【问题讨论】:
标签: magento categories
我想知道是否有一种快速的方法可以从特定类别中删除所有产品? 还是我坚持获取所有类别的产品,然后循环遍历并从每个类别中删除?
我打算在 cron 上运行它。
编辑:目前我正在使用 setCategoryIds() 但这似乎是一种非常低效的方式。
谢谢!
【问题讨论】:
标签: magento categories
这样做的方法确实是循环遍历每个产品;
设置一个类别ID数组,$ids 然后使用 Mage_Catalog_Model_Product 中的 setCategoryIds($ids) 方法设置产品的类别 ID。
如果您想要实际的代码,或者您正在寻找不同的方式,请告诉我。
祝你好运。
【讨论】:
我不知道 cron,但您可以使用导入/导出功能。 或者,根据这些类别中的产品数量,您可以使用管理员产品网格中的批量处理功能。我有一个模块可以按类别过滤此网格:如果您想要它,请告诉我,我会上传到某个地方。 糟糕,批量属性更新无法使用该类别。但是导入/导出就可以了。
【讨论】:
这未经测试,但应该这样做:
$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();
}
【讨论】: