добавить атрибуты продукта Magento - PullRequest
1 голос
/ 11 ноября 2011

Я использую Magento 1.5.1.0. Я хочу добавить продукты через PHP-скрипт. У меня есть пользовательский атрибут с 8 пользовательскими атрибутами, как мне добавить значение к пользовательским атрибутам через php?

Ответы [ 3 ]

2 голосов
/ 11 ноября 2011
    $host = "127.0.0.1/magento/index.php"; //our online shop url
     $client = new SoapClient('http://'.$host.'/api/soap/?wsdl'); //soap handle
     $apiuser= "user"; //webservice user login
     $apikey = "pw"; //webservice user pass

     $sess_id= $client->login($apiuser, $apikey); //we do login
     $attributeSets = $client->call($sess_id, 'product_attribute_set.list');
     $set = current($attributeSets);

    $newProductData = array(
                      'name'              => 'name'
                   // websites - Array of website ids to which you want to assign a new product
                    , 'websites'          => array(1) // array(1,2,3,...)
                    , 'short_description' => 'short'
                    , 'description'       => 'description'
                    , 'status'            => 'status'
                    , 'your_attributes'   => $value
                    , 'your_attributes2'   => $value
                    , 'your_attributes3'   => $value
                      and so on 
                  );

  try {  
  $client->call($sess_id, 'product.create', array('simple', $set['set_id'], 'sku_of_product', $newProductData));
  }
  catch (Exception $e) { //while an error has occured
  echo "==> Error: ".$e->getMessage(); //we print this 
  }

Hf & GL: D

С уважением, Боти

1 голос
/ 16 мая 2012

Поскольку я нашел этот ответ в своем поиске для того же действия с более поздней версией SOAP API V2, я добавляю решение, которое наконец-то придумало.

Для SOAP API V2 оно появляетсячто нам нужно вложить дополнительные_атрибуты в слой multi_data или single_data?

Глядя на приложение / код / ​​ядро ​​/ Маг / Каталог / Модель / Продукт / Api / V2.php # 256 Я думаю, что нам нужно использовать

$manufacturer = new stdClass();
$manufacturer->key = "manufacturer";
$manufacturer->value = "20";
$additionalAttrs['single_data'][] = $manufacturer;

или

$manufacturer = new stdClass();
$manufacturer->key = "manufacturer";
$manufacturer->value = "20";
$additionalAttrs['multi_data'][] = $manufacturer;

для использования как:

    $productData = new stdClass();
    $additionalAttrs = array();

            // manufacturer from one of the two above ^

    $productData->name                   = $data['name']; 
    $productData->description            = $data['description'];
    $productData->short_description      = $data['short_description'];
    $productData->weight                 = 0;
    $productData->status                 = 2; // 1 = active
    $productData->visibility             = 4; //visible in search/catalog
    $productData->category_ids           = $data['categories']; 
    $productData->price                  = $data['price'];
    $productData->tax_class_id           = 2; // 2=standard
    $productData->additional_attributes  = $additionalAttrs;

    // Create new product
    try {
        $proxy->catalogProductCreate($sessionId, 'virtual', 9, $sku, $productData); // 9 is courses
    } catch (SoapFault $e) {
        print $e->getMessage();  //Internal Error. Please see log for details.
        exit();
    }
1 голос
/ 11 ноября 2011

через SOAP с product.create или product.update, если он уже существует

$newProductData = array('name' => 'name',
                        'your_attribute' => $value
                        ,'your_attribute2' => $value  
                         );

 $proxy->call($sessionid, 'product.create', array('simple', $set['set_id'], sku, $newProductData));

Тогда продукты будут созданы с вашими пользовательскими атрибутами.

С уважением Боти

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...