編集フォームの動作をいくつかのコンテンツタイプに変更する必要があります。Drupal 7、古い編集中に新しいノードを保存する
目的: - 更新ボタンを押した後、ノードを更新せず、古いノードの値で新しいノードを作成します。私は古いノードのフィールド値を "/ node/add/my_content"フォームに渡すことでこれを行うことができますが、これは多くの作業(フォームはかなり複雑です)を必要とし、編集ページではすでにフィールド内のすべての値を準備しています。
ので、私はすでに私は新しいノードを作成することができるよ上記のコードでhook_form_alter
function mymodule_form_alter (&$form, &$form_state, $form_id) {
switch ($form_id) {
case 'my_not_update_form':
$node = $form_state['node'];
if (!isset($node->nid) || isset($node->is_new)) {
// This is a new node.
}
else {
$new_node = new StdClass();
$new_node->type = 'my_not_update_form';
node_object_prepare($new_node);
$new_node->uid = $user->uid;
$new_node->language = 'und';
$new_node->title = NULL;
$form['vid']['#value'] = NULL;
$form['nid']['#value'] = NULL;
$form['created']['#value'] = $new_node->created;
$form['changed']['#default_value'] = NULL;
$form['#node'] = $new_node;
$form['#entity'] = $new_node;
$form_state['node'] = $new_node;
$form_state['build_info']['args'][0] = $new_node;
}
break;
}
}
ので試してみましたが、古いノードの日付パラメータを作成すると、「日付を作成する」パラメータは常に同じに滞在し、上記のいずれの行もその問題を解決することはできません。
を使用したフォームの更新の動作を変更します。私は通常の方法で新しいノードを作成していません。私はノードを更新しており、$ formと$ form_state変数を上書きしてnode_form_submit()を騙して、この関数が保存しようとしているデータが古いノードではない新しいノードだと思うようにします。 – szikael
私はあなたのコメントにうまく対処できるようにコードを変更しました。 – timgeek