无法按代码设置产品类别


Unable to set product's category by code

根据

Mage::app()->getWebsite(true)->getDefaultStore()->getRootCategoryId();

默认产品类别ID为'2',但是:

public function initProduct(Varien_Event_Observer $observer) 
// catalog_product_new_action event
{
    $product = $observer->getEvent()->getProduct();
    (...)
    $productCatalog = Mage::getModel('catalog/product')->load($product->getId());        
    $productCatalog->setCategoryIds(array("2"));
    $productCatalog->save();
    $product->save();
    (...)

根本不会改变产品的类别。这要么是错误的ID,要么是错误的更改类别的方式。

在您显示的代码部分中,首先加载一个产品,然后加载该产品的副本,更改该副本的类别,保存该副本,然后保存未设置类别的原始版本。

的想法是加载$product完全与$product->load()(我不认为这是必要的,只是类别),并改变该产品的一切,然后保存它。或者,保留原有的逻辑而不保存原始产品。问题来了,在我看来,从一个不变的产品的双重保存。