Magento以编程方式复制产品不会显示在前端

时间:2016-02-08 10:14:06

标签: php jquery 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 个答案:

答案 0 :(得分:1)

您发布的此功能可以很好地创建重复产品。但是,它没有设置以下属性(由于它在前端不可见):

  
      
  1. 导航至目录>管理产品>重复产品>库存
  2.   

数量为0 库存为"缺货" - 您需要在功能中写下以下代码来设置此产品到股票:"库存" 数量:[某些默认值]说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();
}
  
      
  1. 您需要手动或自动运行重新索引
  2.   

产品将显示在前端。见下面的截图:

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

希望这有帮助。

快乐编码......