以编程方式创建产品


7

我有一个自定义字段的产物,根据这个。我知道我可以用

$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 = array(LANGUAGE_NONE => array( 0 => array(
 'amount' => $product[sale_price] ? $product[sale_price] : $product[retail_price],
 'currency_code' => 'USD',
)));$product[retail_price];
commerce_product_save($cp);

但我有一些自定义字段。

如何以编程方式创建具有完整自定义字段的Drupal Commerce产品?

是否 $cp->myfield1='22';足够?

Answers:


7

商业产品是一个像其他任何实体一样的实体,因此...

$cp->field_my_field[LANGUAGE_NONE][0]['value'] = '22';

3

只是一个调整:产品控制器上的create方法已经具有一些默认值,因此无需添加is_new或status之类的东西。

  public function create(array $values = array()) {
    $values += array(
      'product_id' => NULL,
      'is_new' => TRUE,
      'sku' => '',
      'revision_id' => NULL,
      'title' => '',
      'uid' => '',
      'status' => 1,
      'created' => '',
      'changed' => '',
    );

    return parent::create($values);
  }

所以我会做:

$cp = commerce_product_new('product');
$cp->uid = 1;
$cp->sku = $product[sku];
$cp->title = $product[name];
$cp->language = LANGUAGE_NONE;
$cp->commerce_price = array(LANGUAGE_NONE => array( 0 => array(
 'amount' => $product[sale_price] ? $product[sale_price] : $product[retail_price],
 'currency_code' => 'USD',
)));$product[retail_price];
$cp->my_field[LANGUAGE_NONE][0]['value'] = 22;
commerce_product_save($cp);

1
感谢您的回答,但是我的代码正确无误,我注意到有一位老兄提起我,花点时间tnx来实现它
Yuseferi 2014年

1
只是留在这里,以防其他人碰到这个:)。为了清楚起见,您可以将Clive的答案标记为已接受。
pcambra 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.