2015-05-14 38 views
0

我使用以下脚本(控制器内 - 现在采取行动)以编程方式复制产品。以编程方式复制magento前端未显示的产品(版本1.9.0.1)

public function indexAction() 
{  
    $data = $this->getRequest()->getParams(); 

    $product = Mage::getModel('catalog/product'); 
    $_product = $product->loadByAttribute('sku',$data['prod_sku']); 

    $clone = $_product->duplicate(); 
    $clone->setSku($data['new_sku']); 
    $clone->setUrlKey('foo-bar-1'); 

    $qty = 99; 
    $is_in_stock = 1; 
    $stockArray = array(
        'use_config_manage_stock' => 0, 
        'manage_stock' => 1, 
        'qty' => $qty, 
        'is_in_stock' => $is_in_stock, 
       ); 

    $storeid=0; // your store id 0 is for default store id 
    Mage::getModel('catalog/product_status')->updateProductStatus($clone->getId(), $storeid, Mage_Catalog_Model_Product_Status::STATUS_ENABLED); 

    $clone->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId())); 
    try{ 
     $clone->getResource()->save($clone); 
     $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($clone->getId()); 
     foreach($stockArray as $key => $val){ 
      $stockItem->setData($key, $val); 
     } 

     $stockItem->save(); 
    } catch(Exception $e){ 
     Mage::log($e->getMessage()); 
    } 

    echo "new product ID is ".$clone->getId(); 
} 

这很好,产品与提供的SKU重复并从表单中覆盖价格。

  • 我可以在管理面板中看到产品网格中的产品。
  • 可见性设置为目录,搜索
  • 产品是在股票
  • 启用和标签来纠正类别和网站。
+0

您是否尝试过重新索引 –

+0

是的,我试图与索引,但没有结果。 –

+0

任何帮助将不胜感激。 –

回答

0

最有可能的是,您无法在前端看到产品,因为它在所需网站上不可用。提供的代码只能在管理区域中正确执行(在前端控制器“警告:在1180行中为app/code/core/Mage/Eav/Model/Entity/Abstract.php中的foreach()提供的无效参数” ,所以代码:Mage::app()->getStore(true)->getWebsite()->getId()返回0,这表明前端无法正确的网站。

此时应更换行:

$clone->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId()));

$clone->setWebsiteIds($_product->getWebsiteIds());

相关问题