web-dev-qa-db-ja.com

2つのノードフォームを組み合わせる:それは可能ですか?

Drupal 6を使用しており、コンテンツタイプのノードフォームを取得しました。最初のコンテンツタイプの他のコンテンツタイプノードフォームを変更したいのですが、可能ですか?

3
amirash

Flexifield を使用して、同じフォームで2つのコンテンツタイプを取得することもできます。

ドキュメントのように:

ノードタイプを作成してフィールドタイプを追加することにより、フィールドの組み合わせを定義します。別のノードタイプでflexifieldを追加し、その構成フォームで、フィールド内のアイテムとして使用するノードタイプを指定できます。

2
migueltrindade

hook_form_alter を実装して、2番目のタイプのフィールドを表すカスタムフィールドをいくつか追加します( [〜#〜] fapi [〜#〜] を見てください)。それらは hook_nodeapi に$ op presaveを付けて(dobeermanによって言及されたように)。

以前にフォームに設定したフィールドを新規または偶数および既存のノードとして保存するには、ノードオブジェクトを作成/ロードして、 node_save で保存します。

1
lnunesbr

このモジュールを見ることができます http://drupal.org/project/formblock

モジュールのプロジェクトページの詳細:

ユーザー登録、サイト全体の連絡先、またはノード作成フォームをブロックで表示できるようにします。これは、パネルにフォームを含める場合に特に便利です。

または、単にdrush en formblock -y

0
Ahmad Zain

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;
  }
}
0
dobeerman