Tạo sản phẩm theo chương trình


7

Tôi có một sản phẩm với một lĩnh vực tùy chỉnh, theo điều này . Tôi biết tôi có thể tạo ra sản phẩm với

$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);

nhưng tôi có một số lĩnh vực tùy chỉnh.

Làm cách nào tôi có thể tạo một sản phẩm Thương mại Drupal theo chương trình với các trường tùy chỉnh đầy đủ?

$cp->myfield1='22';đủ không?

Câu trả lời:


7

Một sản phẩm thương mại là một thực thể như bất kỳ sản phẩm nào khác, vì vậy ...

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

3

Chỉ cần một chỉnh sửa: phương thức tạo trên bộ điều khiển sản phẩm đã có một số giá trị mặc định, do đó không cần thêm những thứ như is_new hoặc trạng thái.

  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);
  }

Vì vậy, tôi chỉ cần làm:

$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
Cảm ơn câu trả lời của bạn, nhưng mã của tôi đã đúng và tôi đã đạt được nó bằng cách lưu ý rằng clive đề cập đến tôi, tnx để dành thời gian
Yusef

1
Chỉ cần để nó ở đây trong trường hợp người khác va vào đây :). Bạn có thể đánh dấu câu trả lời của Clive là được chấp nhận cho rõ ràng.
pcambra
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.