Любой ответ, использующий LANGUAGE_NONE или 'und' для изменения поля, не является подходящим способом сделать это, так как предполагает, что сайт drupal является одним языком. Правильный способ редактирования поля - использовать entity_metadata_wrapper.

я есть скрипт, который успешно создает новые узлы. Но у меня проблемы с установкой таксономии перед сохранением.

Я верю в Drupal 6, я бы использовал этот метод.

$cat1_tid = taxonomy_get_term_by_name($data[$i]['cat1']);
$cat2_tid = taxonomy_get_term_by_name($data[$i]['cat2']);
$cat3_tid = taxonomy_get_term_by_name($data[$i]['cat3']);
$node->taxonomy = array($cat1_tid, $cat2_tid, $cat3_tid);

Я думаю, что в Drupal 7 я бы сделал это (мое поле называется Catalog)

$node->taxonomy_catalog['und'][0] = array($term1Obj, $term2Obj);

Похоже, что taxonomy_get_term_by_name не возвращает правильный объект для вставки в объект узла.

Если кто-то может пролить немного света, ценится.

Спасибо

РЕДАКТИРОВАТЬ

Решение:

// Taxonomy
$categories = array($data[$i]['cat1'], $data[$i]['cat2'], $data[$i]['cat3']);
foreach ($categories as $key => $category) {
  if ($term = taxonomy_get_term_by_name($category)) {
    $terms_array = array_keys($term);
    $node->taxonomy_catalog[LANGUAGE_NONE][$key]['tid'] = $terms_array['0'];
  }   
} 

Ответы на вопрос(4)

Ваш ответ на вопрос