我正在使用Magento 1.X API
magento。我想在magento中創建產品,所以我使用catalogProductCreate
方法創建。在Magento中創建多個產品
當它在5 to 10 products
左右時,它工作的很好,但是當試圖插入多個產品時需要花費很多時間。
是否有任何方法一次插入散裝產品?
我正在使用Magento 1.X API
magento。我想在magento中創建產品,所以我使用catalogProductCreate
方法創建。在Magento中創建多個產品
當它在5 to 10 products
左右時,它工作的很好,但是當試圖插入多個產品時需要花費很多時間。
是否有任何方法一次插入散裝產品?
在處理大型數據集時,在Magento中添加產品的API /編程/數據流方法非常緩慢。
如果您還沒有看過它,請嘗試Magmi - 這是Magento產品目錄管理的缺失部分。您可以使用電子表格在幾分鐘內添加/更新數千種產品。它也可以在CLI中調用,從而開啓許多優秀的自動化可能性。
哦,最重要的 - 它是免費的。
我一直在使用這個代碼來添加/更新產品上的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);
我從命令行運行這段代碼,因爲有這樣的內存泄漏。在內存爆炸之前,你只能獲得更多的產品更新,而且你必須編輯並重新運行代碼才能繼續進行,但它可以工作,而且速度相對較快。