Как создать / обновить поля группы drupal 6 CCK для определенного типа контента - PullRequest
1 голос
/ 24 июня 2011

У меня есть следующие настройки в Drupal 6:

Тип содержимого узла: uprofile

Поля: группа полей: group_about с полями field_about_me, field_programinfo

Я создаю узелиспользуя следующую логику:

$node = new stdClass();
$node->title = trim($name);
$node->type = 'uprofile';
$node->created = time();
node_save($node);

Я пытался сохранить узел, используя различные методы, но все они были бесполезны, вот один из способов, которым я пытался это (с сайта drupal):

$form_state = array();
module_load_include('inc', 'node', 'node.pages');
$form_state['values']['type'] = 'uprofile';
$form_state['values']['status'] = 1;
$form_state['values']['op'] = t('Save');
$nodetype = array('type' => 'uprofile');
$form_state['values']['title'] = trim($name);
form_state['values']['field_about_me'][0]['value'] = trim($name);
$form_state['values']['field_programinfo'][0]['value'] = trim($name);
drupal_execute('uprofile_node_form', $form_state, (object)$nodetype);

Это не имело никакого эффекта, и у меня нет идей по этому поводу.Может кто-нибудь, пожалуйста, направьте меня в правильном направлении.

Спасибо.

1 Ответ

0 голосов
/ 24 июня 2011

В какой-то момент мы использовали что-то подобное для извлечения и переформатирования данных из другой базы данных и вставки их в Drupal:

$node = new StdClass();
$node->type = 'NODETYPE';
$node->status = 1;
$node->format = 2;
$node->moderate = 0;
$node->promote = 0;
$node->sticky = 0;
$node->revision = 0;
$node->comment = 0;
// Main node content
$node->title = 'TITLE';
$node->teaser = '';
$node->body = 'BODY';
// Author details
$node->uid = 1;
$node->name = 'USERNAME';
// CCK fields
$node->field_NODETYPE_summary[0]['value'] = 'SUMMARY';
$node->field_NODETYPE_details[0]['value'] = 'DETAILS';
// Submit and save
$node = node_submit($node);
node_save($node);

Потребуется несколько исправлений для использования в вашем конкретном случае, но должно дать вам кое-чтодля начала.

...