web-dev-qa-db-ja.com

プログラムで新しいノードを作成する方法、新しいユーザーが作成されたときにDrupal 7?

新しいユーザーが作成されたときに、プログラムで新しいノード(定義されたタイプのノード)を作成して、そのノードの所有者にしたいと考えています。

Drupal 7でこれを行うにはどうすればよいですか?

2
Ek Kosmos

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
kiamlaluno

これは、Drupal 6.とほぼ同じように実行されます。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
googletorp

hook_user_insert の実装内に新しいノードを作成する必要があります。

1
tim.plunkett