web-dev-qa-db-ja.com

コンテンツタイプにWebフォームを追加する

ウェブフォームを作成してコンテンツタイプに追加したいと思います。したがって、ユーザーがノードを作成すると、webformが自動的にノードに追加されます(webformはコンテンツタイプのノードごとに同じです)。

これはwebform 3で実現可能ですか?

5
user780

ノードreferenceで実行できます。これらの種類のフィールドをコンテンツタイプに追加します。ノードにWebフォームを自動追加するためのデフォルト値をいつでも設定できますが、フォームをノード編集フォームに自動的に追加するわけではありません。

ノード参照とビューを使用してテストしましたが、(同じフォームの)ノード編集ページにWebフォームが表示されません。

Hook_from_alterを使用してみることができます。これは、参照Webフォームからプログラムでフィールドを追加することを意味します。 IMOが唯一のソリューションであるか、このためのいくつかのモジュールがあるかもしれませんが、それらを探していませんでした。

プログラムでWebフォームフィールドをフィルタリングして保存する必要があるため、このフォームにも送信関数を追加する必要があります。これについてはWebForm APIを確認してください。多くの作業、おそらくWebformをまったくプログラミングおよび使用せずに、より良いソリューションについて考える必要がありますか?

5
Codium

同様のことを探しているときに、これに出くわしました。もちろん、これを実現するには多くの方法があり、特定のユースケースで実際に何が望まれるかにも少し依存します。これにより、新しいWebフォームを各ノードにアタッチする必要があるかどうか、または同じWebフォームを各ノードページに表示する必要があるかどうかを意味します。

各ノードに実際に新しいWebフォームをアタッチする場合は、そのコンテンツタイプでWebフォームを有効にすることができます(fromConfiguration>Webform設定)。これにより、そのコンテンツタイプのノードごとにフォームを作成できますが、各ノードのフォームは自動的に作成されず、ノードごとに作成する必要があります。これは、各ノードに同じフォームが必要な場合はあまり役に立ちませんが、フォームを自動的に作成する場合は、それを支援するいくつかのモジュールがあります。 https://drupal.org/project/webform_template および https://drupal.org/project/webform_default_fields

もう1つの方法は、1つのWebフォームを作成し、そのフォームを各ノードページに表示することです。これは、Webフォームをブロックとして表示し、特定のコンテンツタイプでのみコンテンツ領域に表示するブロックを指定することで実現できます。最初に、既存のWebフォームノードを編集してWebフォームをブロックとして使用できるようにし、Webフォームタブをクリックし、フォーム設定をクリックします、開く詳細設定、チェックブロックとして利用可能チェックボックス。その後、通常は[ブロック]ページからブロックを追加し、特定のコンテンツタイプなどの表示を制限できます。 Webフォームでフォームが表示されるノードの一部の値にアクセスする必要がある場合は、それらを非表示フィールドとして追加し、ノードからそれらを取得して値をフォームに設定するカスタムモジュールを作成できます。これに関するいくつかの議論と例はここにあります: https://drupal.org/node/1470748

3
Cvuorinen

Hook_form_alterを使用してみることができます。これは、参照Webフォームからプログラムでフィールドを追加することを意味します。 IMOが唯一のソリューションですが、IMOとは何ですか。

0
megi