2016-05-16 6 views
0

Я работаю над magento, используя Magento 1.X API. Я хочу создать продукты в magento, поэтому я использую метод catalogProductCreate для создания.Создать несколько продуктов в Magento

Это прекрасно работает, когда оно находится около 5 to 10 products, но при попытке вставить несколько продуктов требуется много времени.

Есть ли способ вставить массовые продукты за раз.

ответ

0

Метод API/программный/поток данных для добавления продуктов в Magento, как правило, медленный при работе с большими наборами данных.

Если вы еще не посмотрели на него, попробуйте Magmi - это недостающая часть управления каталогом Magento. Вы можете добавлять/обновлять тысячи продуктов за считанные минуты с помощью электронных таблиц. Его также можно вызвать в CLI, который открывает множество отличных возможностей автоматизации.

О, и лучше всего - это бесплатно.

https://github.com/dweeves/magmi-git

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

Я запускаю этот код из командной строки, так как там протекает утечка памяти. Вы можете обновлять только так много продуктов, прежде чем они ударят память, и вам придется редактировать и повторно запускать код, чтобы продолжать работу, но он работает, и он относительно быстро.

Смежные вопросы