Crea un prodotto a livello di codice


7

Ho un prodotto con un campo personalizzato, secondo questo . So di poter creare un prodotto con

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

ma ho un campo personalizzato.

Come posso creare un prodotto Drupal Commerce a livello di codice con campi personalizzati completi?

È $cp->myfield1='22';sufficiente?

Risposte:


7

Un prodotto commerciale è un'entità come qualsiasi altra, quindi ...

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

3

Solo una modifica: il metodo di creazione sul controller del prodotto ha già alcune impostazioni predefinite, quindi non è necessario aggiungere cose come is_new o 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);
  }

Quindi farei solo:

$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
Grazie per la risposta, ma il mio codice era corretto e lo raggiungo notando che Clive mi menziona, grazie per aver trascorso del tempo
Yuseferi,

1
L'ho lasciato qui nel caso in cui qualcun altro si imbatti in questo :). Potresti contrassegnare la risposta di Clive come accettata per chiarezza.
pcambra,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.