2016-02-08 55 views
1

我是magneto的新手我试图以编程方式复制产品,我成功的问题是重复的产品显示在磁管理端,而在前端产品不是在下面显示的是我的代码,请问能告诉我什么问题对我非常有帮助。我为它创建了一个单独的模块是我的代码。Magento复制产品编程不显示在前端

class Magentotutorial_Helloworld_IndexController extends Mage_Core_Controller_Front_Action {   
    public function indexAction() { 
     $final = $_POST['value']; 
     $obj = Mage::getModel('catalog/product'); 
     $_product = $obj->load($final); 
     $newProduct = $_product->duplicate(); 

     $newProduct->setStatus(1); 


     $newProduct->setSku('value'.$final); 
     $newProduct->setWebsiteIds($_product->getWebsiteIds()); 
     $newProduct->getResource()->save($newProduct); 
    } 

} 

回答

1

该功能您发布的非常好创建重复产品。但是,它不设置下面的属性(由于这是不可见的在前端):

  1. 导航到目录>产品管理>重复的产品>库存

数量是0库存是“缺货” - 您需要在下面写一段代码才能将本产品设置为库存:“库存”数量:[so我默认值]说,100

之后召唤出$newProduct->setWebsiteIds($_product->getWebsiteIds());行了,你可以插入以下行:

$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($newProduct->getId()); 
if ($stockItem->getId() > 0 && $stockItem->getManageStock()) 
{ 
    $qty = 100; //set a default max value 
    $stockItem->setQty($qty); 
    $stockItem->setIsInStock((int)($qty > 0)); 
    $stockItem->save(); 
} 
  • 您将需要运行重新索引手动或者自动化它
  • 该产品将显示在前端。见下面的截图:

    enter image description here

    [编辑]

    使用下面的代码,让我知道它是否适合你:

    public function indexAction() 
    { 
        $productId  = $this->getRequest()->getParam('value'); 
        $productObject = Mage::getModel('catalog/product'); 
    
        $_product = $productObject->load($productId); 
    
        $newProduct = $_product->duplicate(); 
    
        $newProduct->setStatus(1); 
        //$newProduct->setName('Duplicate-' . $_product->getName()); 
        $newProduct->setSku('value' . $productId); 
        $newProduct->setWebsiteIds($_product->getWebsiteIds()); 
    
        $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); 
    
        $indexers = Mage::getSingleton('index/indexer')->getProcessesCollection(); 
        foreach ($indexers as $indexer) 
        { 
         $indexer->reindexEverything(); 
        } 
    } 
    

    希望这有助于。

    编码快乐......

    +0

    我累了它不工作 – Sri

    +0

    的数量只有保持为零,以及如何重新索引我应该在哪里想编写的代码? – Sri

    +1

    上面的答案在CE 1.9.2.2中测试过,并且工作正常(共享屏幕截图)。重新编制索引代码也可以写在同一个函数中。 – Shivani

    相关问题