среда, 7 марта 2012 г.

taxonomy name save programmatically

Drupal 7 In this tick we will save taxonomy name into node taxonomy field programmaticaly.
Basic data:

  • taxonomy name (ex. 'John Doe')
  • taxonomy field (ex. field_term)
Conditions:
  • we dont have this taxonomy name in our vocabulary
  • we have this taxonomy name in our vocabulary
Problem:
  • Drupal taxonomy field saves only 'tid' not title
Soliution is simple. We must save not existing taxonomy name before programmaticall node save.
Here is some (maybe not perfect) code:

 $term_name = 'John Doe';  
 $term_array = taxonomy_get_term_by_name($term_name);  
 if($term_array == array()) { # empty term .. we can save new taxonomy  
      $term->name = $term_name;   
      $term->vid = 1;   
      taxonomy_term_save($term); # here  
      $term_array = taxonomy_get_term_by_name($term_name); # call agaim, we need a 'tid' for save  
      foreach ($term_array as $tid => $term_object)  
      break;   
      $node->field_term[$node->language][0]['tid'] = $term_object->tid;  
       } else {  
       $term_array = taxonomy_get_term_by_name($term_name);  
      foreach ($term_array as $tid => $term_object)  
      break;   
           $node->field_term[$node->language][0]['tid'] = $term_object->tid;  
      }  

Комментариев нет:

Отправить комментарий