Как создать новый узел программно, когда создается новый пользователь, в Drupal 7?


В то время, когда создается новый пользователь, я хочу программно создать новый узел (определенного типа) и сделать его владельцем этого узла.

Как я могу сделать это в Drupal 7?

 2
Author: kiamlaluno, 2011-03-25

3 answers

Правильно, что вам нужно реализовать hook_user_insert(). Код, который необходимо реализовать, отличается от кода, который вы бы реализовали в Drupal 6, потому что тело узла - это поле в Drupal 7 (см. API полей).

Реализация hook_user_insert() должна быть аналогична следующей.

function mymodule_user_insert(&$edit, $account, $category) {
  $body_text = 'This is the text contained in the node body.'; // [1]
  $node = new stdClass();
  $node->type = 'article';  // [1]
  node_object_prepare($node);

  $node->language = LANGUAGE_NONE;

  $node->body[$node->language][0]['value']   = $body_text;
  $node->body[$node->language][0]['summary'] = text_summary($body_text);
  $node->body[$node->language][0]['format']  = 'filtered_html';

  $node->title    = 'Node Created Programmatically on ' . date('c'); // [1]
  $node->uid      = $account->uid;

  $path = 'content/programmatically_created_node_' . date('YmdHis'); // [1]
  $node->path = array('alias' => $path);

  node_save($node);
}

Строки, отмеченные [1], являются частями, которые вам необходимо персонализировать.

 5
Author: kiamlaluno, 2011-03-26 14:09:49

Это сделано почти так же, как в Drupal 6. Создайте объект с требуемыми значениями и используйте node_save. Все это должно произойти в hook_user op insert:

module_user_insert(&$edit, $account, $category) {
  $node = new stdClass();
  $node->title = 'title'
  $node->uid = $account->uid;
  node_save($node);
}
 2
Author: googletorp, 2011-03-25 22:13:42

Вам нужно будет создать новый узел внутри реализации hook_user_insert.

 1
Author: tim.plunkett, 2011-03-25 18:36:30