質問: 一括フィールド更新? 既に多くのノードがあるdrupal 7コンテンツタイプに新しい(テキスト)フィールドを追加しました。これらのすべてのノードのデフォルト値をフィールドに入力するにはどうすればよいですか?
回答: ある値でフィールドを更新したいだけなら、受け入れられた答えのより高性能な代替はこれです:$lang = language_none; // replace with iso639-2 code if localizing $node_type = 'page'; // machine name of the content type $query = new entityfieldquery; $result = $query ->entitycondition('entity_type', 'node') ->propertycondition('type', $node_type) ->execute(); if (!empty($result['node'])) { $nodes = entity_load('node', array_keys($result['node'])); foreach($nodes as $node) { // replace field_foo with the machine name of the field to update. // - 0 refers to specific within the field array, for when the field contains // multiple values. if the field only has one value, it should be 0. $node->field_foo[$lang][0]['value'] = 'new value'; field_attach_presave('node', $node); field_attach_update('node', $node); } } 違いは、直接使用することですfield_attach_presaveおよびfield_attach_update関数。ノードフィールドのみを正しく更新し、残りのノード保存プロセスをスキップします。これは、ノードの事前保存/保存フックが呼び出されない、「変更された」日付が現在の日付に更新されないなどの影響があります。ユースケースによっては、node_save()プロセス全体を使用する方がよい場合があります。