Доброго дня,
Программно создаю ноду с полями:
<?php
$node = new stdClass();
$node->type = 'car';
$node->status = 1;
$node->uid = 1;
$node->changed = $new_node['timestamp'];
$node->sticky = 0;
$node->field_year['und'][0]['value'] = $car_node['year'];
$node->field_model['und'][0]['value'] = $car_node['model'];
node_save($node);
?>
Текстовые поля таким образом заполняются без проблем. А как быть с полями, которые представляют собой списки терминов таксономии или поля с автодополнением термина? Мне надо выбрать значение или добавить новое, если его не существует. Пробовал по аналогии с предыдущими полями (для поля с автодополнением):
<?php
$terms = taxonomy_get_term_by_name($car_node['make']);
$maker = array_shift($terms);
$node->field_make['und'][0]['value'] = $maker->name;
?>
Но сие не работает. Интересует как реализовать заполнение поля-термина в форме списка и в форме поля с автодополнением.
Заранее спасибо за ответы!
Комментарии
Термины для ноды хранятся уж точно не как список названий терминов через запятую.
А это будет массив идентификаторов терминов.
Для того, чтобы увидеть, как это хранится, можете сделать так.
Заполните ноду с терминами и сохраните её через админку, затем загрузите её программно
где $nid - Ваш идентификатор ноды.
и посмотрите с помощью отладочной функции, что из себя представляет объект-нода. Например, так.
а вы на орге читали документацию? там даже примеры есть на этот счет.
В данном случае достаточно прочесть на любом даже русскоязычном, ресурсе о том, что такое таксономия и как она хранится в базе.
Ну, на самом деле, среди массы примеров я не нашел рабочего решения, хотя, может просто не сориентировался.
Интуитивно догадался, что вместо значения нужно присваивать id термина
<?php
$terms = taxonomy_get_term_by_name($car_node['make']);
$maker = array_shift($terms);
$node->field_make['und'][0]['tid'] = $maker->tid;
?>
Всем спасибо за советы