添加Magento产品属性

时间:2011-11-11 10:25:17

标签: php magento

我使用的是Magento 1.5.1.0。 我想通过PHP脚本添加产品。 我有一个自定义属性设置有8个自定义属性,我如何通过PHP添加自定义属性的值?

3 个答案:

答案 0 :(得分:2)

    $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

关心Boti

答案 1 :(得分:1)

通过带有product.create或product.update的SOAP(如果它已经存在)

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

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

然后将使用您的自定义属性创建产品。

关心boti

答案 2 :(得分:1)

因为我在寻找与更高版本的SOAP API V2做同样事情时发现了这个响应,所以我添加了我最终提出的解决方案。

对于V2 SOAP API,我们需要将additional_attributes嵌套在multi_data或single_data层中?

查看app / code / core / Mage / Catalog / Model / Product / 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();
    }