質問: 機能しているフィールドウィジェットフォームを単独で表示することはできますか? ノード編集フォーム全体のコンテキストの外にフィールドウィジェットフォームを埋め込むことに興味があります。過去に drupal_get_form を使用して完全なフォームを表示しましたが、それは単独のフィールドフォームには適用されないようです。有効なフィールドウィジェットフォームを表示できますか?そうするための最良の方法は何でしょうか?フィールドウィジェットと「通常の」フォームはどちらも非常に似ているため、これが不可能な場合、ウィジェットフォームを通常のフォームに「変更」するには何が必要ですか。これは question が似たようなものを求めているようですが、答えがわかりません。その答えは hook_field_widget_form_alter の使用を指定しています。私が理解していないのは、作成されたフィールドフォームをフックする方法ではなく、フィールドフォームを表示する方法です。
回答: vboは、modify.action.incで次のようなことを行います。$form_key = 'bundle_' . $bundle_name; $form[$form_key] = array( '#type' => 'fieldset', '#title' => $label, '#parents' => array($form_key), ); field_attach_form($context['entity_type'], $entity, $form[$form_key], $form_state, language_none); そのため、エンティティタイプ、エンティティ(バンドルキーセットのみの空のオブジェクトであり、実際に使用されるもの)、ウィジェットが追加されるフォーム、および言語が必要です。ウィジェットをフォームの奥深く($ formではなく、$ form [$ form_key]のように、またはさらに深く)埋め込みたい場合は、そのフォーム配列に#parentsを設定する必要があります。もちろん、これにより、そのエンティティタイプとバンドルに属するすべてのフィールドのウィジェットが埋め込まれることに注意してください。これが、アタッチ関数の記述方法です。それを回避するには、かなりの数のコードを再発明する必要があります。 実際のコード を参照してください。私が行うことは、フィールドインスタンスを調べて、各$ field_nameを取得し、そのフィールドタイプに興味がない場合は、$form[$form_key][$field_name]['#access'] = false;これらのウィジェットを見えなくします。編集:さて、ctoolsにはctools_field_invoke_field()があり、理論的にはフィールド単位で作業できます。私はそれを使ったことがありません。上記のテキストは私の直接の経験です。