Search code examples
phpmagentomagento-1.9

Unable to set product's category by code


According to

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

ID of the default product category is '2' but:

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();
    (...)

doesn't change product's category at all. It's either wrong ID or wrong way of changing the category.


Solution

  • in the part of code you show, first you load a product, then you load a copy of the product, you change the categories of that copy, you save the copy and then, you save the original where the categories haven't been set.

    the idea is to load the $product completely with $product->load() (I do not think it is necessary just for categories) and to change everything on that product and then save it. Or, keep the logic you did and not save the original product. The problem comes, in my opinion, from the double save with an unchanged product.