2013-08-19 42 views
0

我使用在代碼中創建一個Drupal Commerce產品如下:如何以編程方式創建一個Drupal Commerce產品與價格

$cp = commerce_product_new('product'); 
$cp->is_new = TRUE; 
$cp->revision_id = NULL; 
$cp->uid = 1; 
$cp->status = 1; 
$cp->created = $cp->changed = time(); 
$cp->sku = $product[sku]; 
$cp->title = $product[name]; 
$cp->language = LANGUAGE_NONE; 
$cp->commerce_price->amount = $product[sale_price] ? $product[sale_price] : $product[retail_price]; 
$cp->commerce_price->currency_code = 'USD'; 
commerce_product_save($cp); 

如果我註釋掉關於價格的兩條線,該產品被添加,但沒有價格。

如果我不註釋掉兩行,我得到一個500錯誤

如果我改變定價部分是:

$cp->commerce_price = array(
    'amount' => $product[sale_price] ? $product[sale_price] : $product[retail_price], 
    'currency_code' => 'USD', 
); 

我不明白的500,但是我得到的添加消息

Warning: Invalid argument supplied for foreach() in _commerce_price_field_serialize_data() (line 148 of commerce/modules/price/commerce_price.module). 

每個產品,結果是被添加和提供的產品,但在field_data_commerce_price表中沒有價格信息,其中任何一個。

回答

0

原來它需要:

$cp->commerce_price = array(LANGUAGE_NONE => array(0 => array(
'amount' => $product[sale_price] ? $product[sale_price] : $product[retail_price], 
'currency_code' => 'USD', 
))); 
相關問題