Magento无法以编程方式添加产品

时间:2014-04-26 04:02:25

标签: magento

我使用下面的代码在magento中添加产品但没有成功,有谁知道该怎么做?

code here

code txt file

require_once $mageFilename;

Mage::setIsDeveloperMode(true);

umask(0);

Mage::app();

Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));

$product = new Mage_Catalog_Model_Product();

$product->setSku('A123');

$product->setAttributeSetId(4);

$product->setTypeId('simple');

$product->setName('Some cool product name');

$product->setCategoryIds(array(19));

$product->setWebsiteIDs(array(1));

$product->setDescription('Full description here');

$product->setShortDescription('Short description here');

$product->setPrice(39.99);

$product->setWeight(4.0000);

$product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH);

$product->setStatus(1);

$product->setTaxClassId(0);

$product->setStockData(array( 'is_in_stock' => 1, 'qty' => 99999 ));

$product->setCreatedAt(strtotime('now'));

尝试{

$产品 - >保存();

}

catch(Exception $ ex){

}

>

2 个答案:

答案 0 :(得分:0)

我希望它可能是mage.php path issue。尝试使用mage文件路径

假设,我的Magento路径在服务器中为/home/abc/www/www/。 和我的脚本文件位置/home/abc/www/www/try/dot/myscript.php

如果你试图从myscript.php中包含mage.php,那么

$mageFilename = '/home/abc/www/www/app/Mage.php'

$mageFilename = '../../app/Mage.php'

我已经在脚本中使用修改mage.php文件位置调用来运行你的脚本。它正常工作

答案 1 :(得分:0)

我一直在使用此代码在Magento上添加/更新产品。

<?php
include_once("app/Mage.php");
Mage::app();
umask(0);
Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));

$counter = 0;

我有这个功能来获取(或创建)SKU的产品:

function GetProduct($sku)
{
    global $counter;
    echo $sku;
    $p = Mage::getModel('catalog/product');
    $productId = $p -> getIdBySku($sku);       
    if($productId)
    {
        echo "!";
        $p -> load( $productId );
    }
    else
    {
        $p->setTypeId('simple');
        $p->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH); 
        $p->setStatus(1);
        $p->setTaxClassId(7);
        $p->setWebsiteIDs(array(1)); 
        $p->setStoreIDs(array(1)); 
        $p->setAttributeSetId(4);
        $p->setSku($sku);
    }
    echo "...";
    $counter++;
    echo " ".$counter;
    return $p;
}

这是保存产品的功能:

function SaveProduct($p)
{
    try
    {
        if (is_array($errors = $p->validate()))
        {
            $strErrors = array();
            foreach($errors as $code=>$error)
            {
                $strErrors[] = ($error === true)? Mage::helper('catalog')->__('Attribute "%s" is invalid.', $code) : $error;
                echo $strErrors[0];
            }
            $this->_fault('data_invalid', implode("\n", $strErrors));
        }
        $p->save();
        echo "\n";
    }
    catch (Mage_Core_Exception $e)
    {
        $this->_fault('data_invalid', $e->getMessage());
    }
}

最后我这样打电话:

$product = GetProduct('sku1');
$product->setData('thumbnail_label', 'sku1');
SaveProduct($product);
unset($product);
$product = GetProduct('sku2');
$product->setData('url_path', 'plastic-hat.html');
SaveProduct($product);
unset($product);
$product = GetProduct('sku3');
$product->setData('thumbnail_label', 'sku3');
SaveProduct($product);
unset($product);
$product = GetProduct('sku4');
$product->setData('thumbnail_label', 'sku4');
SaveProduct($product);
unset($product);
$product = GetProduct('sku5');
$product->setData('thumbnail_label', 'sku5');
SaveProduct($product);
unset($product);

我从命令行运行此代码,因为以这种方式运行内存泄漏。你只能在打破内存之前更新这么多产品,你必须编辑并重新运行代码才能继续运行,但是它可以工作并且速度相对较快。

您应该可以很好地插入代码。