Créer un produit par programme


7

J'ai un produit avec un champ personnalisé, selon cela . Je sais que je peux créer un produit avec

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

mais j'ai un champ personnalisé.

Comment puis-je créer un produit Drupal Commerce par programme avec des champs personnalisés complets?

Est $cp->myfield1='22';suffisant?

Réponses:


7

Un produit commercial est une entité comme une autre, alors ...

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

3

Juste un ajustement: la méthode create sur le contrôleur de produit a déjà des valeurs par défaut, donc pas besoin d'ajouter des choses comme is_new ou 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);
  }

Je ferais donc juste:

$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
Merci pour votre réponse, mais mon code était correct et j'y parviens en notant que clive me mentionne, tnx pour passer du temps
Yuseferi

1
Je viens de le laisser ici au cas où quelqu'un d'autre se heurterait à ça :). Vous pouvez marquer la réponse de Clive comme acceptée pour plus de clarté.
pcambra
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.