【问题标题】:Programatically duplicated product not displayed on frontend in magento (ver 1.9.0.1)以编程方式复制未显示在magento前端的产品(ver 1.9.0.1)
【发布时间】:2015-05-14 03:54:52
【问题描述】:

我使用以下脚本(在控制器内部 - 现在的操作)以编程方式复制产品。

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 和表单中的覆盖价格重复。

  • 我可以在管理面板的产品网格中看到产品。
  • 可见性设置为目录、搜索
  • 产品有货
  • 已启用并标记为正确的类别和网站。

【问题讨论】:

  • 你尝试过重新索引
  • 是的,我尝试了索引但没有结果。
  • 任何帮助将不胜感激。

标签: magento


【解决方案1】:

很可能,您无法在前端看到产品,因为它在所需的网站上不可用。提供的代码只能在管理区域中正确执行(在前端控制器中“警告:在第 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());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多