Drupal Commerce import products & taxonomy terms

makgab képe

Üdv!

Ha jól látom, importáláskor (script) a termékekhez szeretnék kifejezéseket (taxonomy terms) kötni, hogy csoportosíthatók legyenek a termékek, akkor erre nincs függvény a Commerce API-ban?
Ez csak kézzel mehet utólag v. csak én nem találtam a fv-t?

G.

Drupal verzió: 
dj képe

field, mint a többi csak nem 'value', hanem 'tid' a tömb kulcsa. Létrehozod a kifejezés hivatkozás mezőt (pl. field_grouping_tags) és feltöltöd importkor:

$product->field_grouping_tags[LANGUAGE_NONE] = array(
   array('tid' => term_id1), // pl. 12
   array('tid' => term_id2), // pl. 44
   array( ... ),
);
0
0

Üdv!
Dudás József

makgab képe

<?php
           $product = new StdClass();
           $product->product_id = $product_q->product_id;
           $product->title = $xml_title;
           $product->sku = $xml_id;
           $product->status = '1';
           $product->revision_timestamp = time();
           // $product->type = $xml_producttype;
           $product->uid = $user->uid;
           $product->created = time();
           $product->changed = time();
           $product->field_symbol_code[LANGUAGE_NONE][0]['value'] = $xml_code;
           $product->field_productgroups[LANGUAGE_NONE][0] = array(
                 array('tid' => 5),
                 array('tid' => 12),
                 );
 
           commerce_product_save($product);
?>

Futtatáskor ezt kapom:
EntityMalformedException: commerce_product típusú entitáson hiányzik a mezőcsoport tulajdonság. entity_extract_ids() függvényben (/var/www/html/includes/common.inc 7539 sor).

Nem egészen világos milyen mezőcsoport tulajdonság hiányzik neki.

0
0
dj képe

A delta az nem 0 hanem az aktuális elem indexe kell, hogy legyen:

$product = new StdClass();
           $product->product_id = $product_q->product_id;
           $product->title = $xml_title;
           $product->sku = $xml_id;
           $product->status = '1';
           $product->revision_timestamp = time();
           // $product->type = $xml_producttype;
           $product->uid = $user->uid;
           $product->created = time();
           $product->changed = time();
           $product->field_symbol_code[LANGUAGE_NONE][0]['value'] = $xml_code;
           $product->field_productgroups[LANGUAGE_NONE]= array(
                 array('tid' => 5), // ez a delta 0
                 array('tid' => 12), // ez a delta 1
                 );
 
           commerce_product_save($product);

Ez ugyanaz, hogy lásd a delta értékeket:

$product = new StdClass();
           $product->product_id = $product_q->product_id;
           $product->title = $xml_title;
           $product->sku = $xml_id;
           $product->status = '1';
           $product->revision_timestamp = time();
           // $product->type = $xml_producttype;
           $product->uid = $user->uid;
           $product->created = time();
           $product->changed = time();
           $product->field_symbol_code[LANGUAGE_NONE][0]['value'] = $xml_code;
           $product->field_productgroups[LANGUAGE_NONE][0]= array('tid' => 5); // ez a delta 0
           $product->field_productgroups[LANGUAGE_NONE][1]= array('tid' => 12); // ez a delta 1
 
           commerce_product_save($product);

Remélem hoztál létre a termékhez "field_productgroups" nevű mezőt aminek korlátlan elemszámot biztosítottál.

0
0

Üdv!
Dudás József

makgab képe

Igen, van field_productgroups mező (és korlátlan).

Érdekes, hogy az alábbi kód update-kor nem működik, insert-kor viszont igen:

 $product->field_productgroups[LANGUAGE_NONE] = array(
                 array('tid' => 5), // ez a delta 0
                 array('tid' => 12), // ez a delta 1
                 );

update (termék frissítéskor):
EntityMalformedException: commerce_product típusú entitáson hiányzik a mezőcsoport tulajdonság. entity_extract_ids() függvényben (/var/www/html/includes/common.inc 7539 sor).

0
0
makgab képe

Megvan.
Módosításkor (update) kellett:

...
$product->type = 'product';
...

Köszönöm a segítséget!

0
0
dj képe

a típust mindig megadod neki, hogy szokd ;) Mert mi lesz ha kétféle terméktípusod lesz valamikor?

0
0

Üdv!
Dudás József