Создайте узел программно и установите значения его поля CCK


Я попробовал технику, описанную здесь: http://lucasforge .2bopen.org/2010/06/drupal-6-create-a-node-with-cck-fields-programmatically/

И здесь: http://drupal.org/node/1111514

Похоже, ни то, ни другое не работает. Узел создается, но поле CCK, которое я пытаюсь установить, никогда не устанавливается.

Оба они просто описывают использование "имя_поля[0]['значение'] = 'что-то'", но даже если я задам значение поля через веб-форму и DSM, результат у него никогда не задано "значение", просто "#default_value".

Я попытался установить "имя_поля[0]['#значение по умолчанию'][0]['nid'] = 'mynodeid'", но это тоже не сработало.

Это структура поля CCK, которую я пытаюсь установить:

field_application_discipline_id (Array, 13 elements)

#type (String, 20 characters ) nodereference_select
#default_value (Array, 1 element)
#required (String, 1 characters ) 0
#columns (Array, 1 element)
#title (String, 13 characters ) Discipline ID
#description (String, 0 characters )
#delta (Integer) 0
#field_name (String, 31 characters ) field_application_discipline_id
#type_name (String, 11 characters ) application
#tree (Boolean) TRUE
#weight (String, 2 characters ) 31
#access (Boolean) TRUE
#count (Integer) 9

Есть идеи, почему это не сработает?

 1
Author: Joren, 2011-07-28

1 answers

Для полей nodereference вы должны использовать "nid" вместо "значение".

//123 is the nid of the node you want to reference 
$node->field_application_discipline_id[0]['nid'] = 123;

Лучший способ узнать, какую переменную использовать, - это установить Модуль разработки и просмотреть вкладку разработка рядом с вкладкой просмотр/редактирование на странице узла.

 1
Author: tostinni, 2011-07-31 21:24:40