Как создать новый узел программно, когда создается новый пользователь, в Drupal 7?
В то время, когда создается новый пользователь, я хочу программно создать новый узел (определенного типа) и сделать его владельцем этого узла.
Как я могу сделать это в Drupal 7?
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]
, являются частями, которые вам необходимо персонализировать.
Это сделано почти так же, как в 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);
}
Вам нужно будет создать новый узел внутри реализации hook_user_insert.