Update products programmatically in Magento

后端 未结 5 802
礼貌的吻别
礼貌的吻别 2020-12-13 15:53

I\'m working on a script that will create or update products in my catalog.
The script works fine when the product needs to be created, but it fails when the product alr

5条回答
  •  时光说笑
    2020-12-13 16:15

    //here what i use in codeigniter
    function updateProducts(){
        $params = array('name' => 'adminhtml'); // frontend or adminhtml
        $this->load->library('magento', $params);
        error_reporting(E_ALL | E_STRICT);
        //$mageFilename = 'app/Mage.php';
        //require_once $mageFilename;
        Mage::setIsDeveloperMode(true);
        umask(0);
        Mage::app();
        Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));      
        $obj = new stdClass(); 
        $obj->Sku = '25484684';
        $obj->Name = 'test product 2';
        $obj->SalePrice = 55;
        $obj->LongDescription = 'test product long decription.test product long decription.test product long decription.';
        $obj->Description = 'short descrption';
        $res = $this->updateMagentoProduct($obj);
        //dumb($res);
    }
    function updateMagentoProduct($XMLproduct){
        $SKU = (string)$XMLproduct->Sku;
        $product = Mage::getModel('catalog/product')->loadByAttribute('sku',$SKU);
        if (!$product) {//insert new product
            $product = Mage::getModel('catalog/product');
            $product->setSku($SKU);
        }       
        //$product = new Mage_Catalog_Model_Product();
        // Build the product
        $product->setAttributeSetId(4); // 4 means Default AttributeSet
        $product->setTypeId('simple');
        $product->setName((string)$XMLproduct->Name);
        $product->setCategoryIds(array(2,3,4,5,6,7));
        $product->setWebsiteIDs(array(1)); # Website id, 1 is default 
           //$product->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId()));
        //$product->setWebsiteIDs(array(1)); # Website id, my is 1 (default frontend)
        $product->setDescription((string)$XMLproduct->LongDescription);
        $product->setShortDescription((string)$XMLproduct->Description);
        $product->setPrice((real)$XMLproduct->SalePrice);
        # Custom created and assigned attributes
        //$product->setHeight('my_custom_attribute1_val');
        //$product->setWidth('my_custom_attribute2_val');
        //$product->setDepth('my_custom_attribute3_val');
        //$product->setType('my_custom_attribute4_val');
        //Default Magento attribute
        $product->setWeight(1.0);
            $product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH);
        $product->setStatus(1);
        $product->setTaxClassId(0); # My default tax class
        /*$product->setStockData(array(
            'is_in_stock' => 1,
            'qty' => 99999
        ));*/
        $product->setCreatedAt(strtotime('now'));
        try {
    
            $product->save();
            $productId = $product->getId();
            $stockItem =Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId);
            $stockItemId = $stockItem->getId();
    
            $stockItem->setData('manage_stock', 1);
            $stockItem->setData('qty', 99999);//(integer)$XMLproduct->QtyInStock
    
            $stockItem->save();
    
    
    
            echo '
    '.$SKU," Updated: Name: '",(string)$XMLproduct->Name,"', Price: ",(real)$XMLproduct->SalePrice,", Stock level: ",PHP_EOL.'
    '; } catch (Exception $ex) { //Handle the error echo '
    '.$ex->getMessage().'
    '; } // assign product to the default website return $product->save(); }

提交回复
热议问题