Magento очищает категорию (1.5)

#magento #categories

#magento #Категории

Вопрос:

Мне интересно, есть ли быстрый способ удалить все продукты из определенной категории? Или я застрял с получением всех продуктов категорий, затем перебираю и удаляю категорию из каждой?

Я планирую запустить это на cron.

Редактировать: В настоящее время я использую setCategoryIds (), но это кажется очень неэффективным способом сделать это.

Спасибо!

Ответ №1:

Способ сделать это — действительно перебирать каждый продукт;

задайте массив идентификаторов категорий, $ids затем используйте метод setCategoryIds($ids) в Mage_Catalog_Model_Product, чтобы задать идентификатор категории для продукта.

Дайте мне знать, если вам нужен фактический код для этого или если вы ищете другой способ.

Удачи.

Комментарии:

1. Спасибо за ответ. На самом деле я использую setCategoryIds (), это кажется действительно трудоемким способом очистки категории, хотя я надеялся, что есть более быстрый метод, который я мог бы использовать. (Возможно, мне следовало упомянуть об этом. Я отредактирую вопрос.)

Ответ №2:

Я не знаю о cron, но вы могли бы использовать функцию импорта / экспорта. Или, в зависимости от количества товаров в этих категориях, вы могли бы использовать функцию массовой обработки в таблице товаров администратора. У меня есть модуль для фильтрации этой сетки по категориям: если она вам нужна, просто дайте мне знать, и я куда-нибудь ее загружу.упс, категория недоступна при массовом обновлении атрибутов. но импорт / экспорт будет выполнен просто отлично.

Комментарии:

1. Спасибо, но это действительно нужно запускать через задание 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();
}
  

Комментарии:

1. Спасибо за это (хотя небольшая опечатка: $ category-> getCategoryIds(); должно быть $ product-> getCategoryIds();)