Drupal 6を使用しており、コンテンツタイプのノードフォームを取得しました。最初のコンテンツタイプの他のコンテンツタイプノードフォームを変更したいのですが、可能ですか?
Flexifield を使用して、同じフォームで2つのコンテンツタイプを取得することもできます。
ドキュメントのように:
ノードタイプを作成してフィールドタイプを追加することにより、フィールドの組み合わせを定義します。別のノードタイプでflexifieldを追加し、その構成フォームで、フィールド内のアイテムとして使用するノードタイプを指定できます。
hook_form_alter を実装して、2番目のタイプのフィールドを表すカスタムフィールドをいくつか追加します( [〜#〜] fapi [〜#〜] を見てください)。それらは hook_nodeapi に$ op presaveを付けて(dobeermanによって言及されたように)。
以前にフォームに設定したフィールドを新規または偶数および既存のノードとして保存するには、ノードオブジェクトを作成/ロードして、 node_save で保存します。
このモジュールを見ることができます http://drupal.org/project/formblock
モジュールのプロジェクトページの詳細:
ユーザー登録、サイト全体の連絡先、またはノード作成フォームをブロックで表示できるようにします。これは、パネルにフォームを含める場合に特に便利です。
または、単にdrush en formblock -y
1番目のフォームから2番目のフォームに値を追加する場合は、hook_nodeapi()を使用して2番目のコンテンツタイプノードを変更できます。
function mymodule_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL){
switch($op){
case 'presave':
if($node->type == MY_NODE_TYPE){
// $other_node = node_load($other_nid);
// or
// $other_node = new stdClass();
// $other_node->title = ...
// ...
// some code to altering other node
// $other_node = node_submit($other_node);
// node_save($other_node);
}
break;
}
}