2011-05-23 63 views
2

我想知道是否有快速的方法從特定類別中刪除所有產品? 或者我堅持要獲取所有類別產品,然後循環並從每個類別中刪除類別?Magento清空一個類別(1.5)

我打算在cron上運行這個。

編輯:目前我使用setCategoryIds(),但它似乎是一個非常低效的方式做到這一點。

謝謝!

回答

0

我不知道cron,但可以使用導入/導出功能。 或者,根據這些類別中的產品數量,您可以使用管理員產品網格中的批量處理功能。我有一個模塊來過濾這個網格的類別:如果你想它只是讓我知道,我會上傳它的地方。 oops,該類別不適用於批量屬性更新。但導入/導出將會很好。

+0

感謝但這需要通過cron作業運行 – sulman 2011-05-23 10:22:08

1

做到這一點的方法的確是循環每個產品;

設置類別ID的數組,$ id 然後使用Mage_Catalog_Model_Product中的setCategoryIds($ ids)方法設置產品的類別ID。

讓我知道你是否想要這個實際的代碼,或者如果你正在尋找不同的方式。

祝你好運。

+0

感謝您的回答。我實際上使用setCategoryIds(),雖然這似乎是一種非常費力的清空類別的方法,但我希望有一種更快的方法可以使用。 (我也許應該提到那個,我會編輯這個問題。) – sulman 2011-05-23 11:26:18

0

這不是測試,但這樣的事情應該這樣做:

$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(); 
} 
+0

感謝你(輕微的錯字雖然:$ category-> getCategoryIds();應該是$ product-> getCategoryIds();) – sulman 2011-05-23 12:45:02

+0

良好的捕獲,在代碼示例 – 2011-05-23 18:40:27