我使用的是Magento 1.5.1.0。 我想通过PHP脚本添加产品。 我有一个自定义属性设置有8个自定义属性,我如何通过PHP添加自定义属性的值?
答案 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();
}