2011-12-05 50 views
0

我正在嘗試編寫一個自定義模塊,該模塊能夠將產品複製到只有不同SKU的多個產品中。我嘗試在我的自定義模塊中使用/app/code/core/Mage/Catalog/Model/Product.php下的function duplicate()。但它不工作。用Magento中的代碼複製產品

我使用下面的代碼在我的自定義文件Obesrever.php複製,但複製不存在的

$product = $observer->getEvent()->getProduct(); 
$newProduct = $product->duplicate(); 

任何人都可以建議我的任何環節爲做到這一點或任何代碼的格式將是有益的。

感謝

+0

請更精確地定義「不工作」。 –

+0

我已經在我的問題中介紹過了。請看看 – balanv

+0

你是否已經證明你的自定義觀察者確實被調用?如果是這樣,$ newProduct包含了什麼?它是'null'還是'Mage_Sales_Catalog_Product'的一個實例?如果它是'null',請檢查你的'exception.log'。 –

回答

0

這將是巨大的,如果你可以發佈您試圖調試的完整功能或創建重複的產品和config.xml文件(你在哪裏試圖調用事件)。

下面的代碼在CE 1.9.2.2中適用,沒有任何問題。此功能執行以下任務:

  1. 創建原始產品的重複
  2. 設置股票爲「庫存」的數量爲「100」(硬編碼現在)
  3. 自動重建索引
public function indexAction() //change the function name 
{ 
    $productId  = $observer->getEvent()->getProduct()->getId(); 

    $productObject = Mage::getModel('catalog/product');  
    $_product  = $productObject->load($productId); 

    $newProduct  = $_product->duplicate(); 

    //new product status is disabled - to view in the frontend you will need to set the status as enabled 
    $newProduct->setStatus(1); 
    $newProduct->setName('Duplicate-' . $_product->getName()); 
    $newProduct->setSku('value-' . $productId); 
    $newProduct->setWebsiteIds($_product->getWebsiteIds()); 

    //set the product stock and qty to display product in the frontend 
    //while creating duplicate product, it will update the new product to have qty 0 and out of stock 
    $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($newProduct->getId()); 
    if ($stockItem->getId() > 0 && $stockItem->getManageStock()) 
    { 
     $qty = 100; 
     $stockItem->setQty($qty); 
     $stockItem->setIsInStock((int)($qty > 0)); 
     $stockItem->save(); 
    } 

    $newProduct->getResource()->save($newProduct); 

    //automate reindexing - to display the product in the frontend 
    $indexers = Mage::getSingleton('index/indexer')->getProcessesCollection(); 
    foreach ($indexers as $indexer) 
    { 
     $indexer->reindexEverything(); 
    } 
} 

希望這有助於。

快樂編碼...