如何以编程方式创建具有价格的Drupal Commerce产品

时间:2013-08-19 23:20:40

标签: drupal 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);

如果我注释掉与价格有关的两行,则会添加产品,但没有价格。

如果我没有注释掉2行,我会收到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表中没有任何价格信息。

1 个答案:

答案 0 :(得分:0)

原来需要:

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