web-dev-qa-db-ja.com

サイト連絡フォームにフィールドを追加する

これは私には奇妙に難しいようです。私が考えたのは、コンテンツタイプにフィールドを追加するようなちょっと余分なフィールドを追加する場合でしょう。しかし、違います。連絡先フォームに電話番号フィールドを追加する機能が見つかりませんか?誰か知ってる?

17
Purplemonkey

フォームフィールドがコンテンツタイプのように構成されることを期待することは、過度に一般化されています。コンテンツタイプは、content(テキスト、画像など)のWebサイト、より具体的には、Drupalでは nodes (Drupalの主要なコンテンツ)。 FieldおよびField UIモジュールを使用すると、Web UIを使用して fields をコンテンツタイプに簡単に追加できます。一部の特定の場合を除いて、フォームはWebサイトのコンテンツの一部ではなく、ユーザーが情報を追加および編集する方法です。

Drupalでフォームをカスタマイズ(つまり変更)するには、通常の方法は [カスタムモジュールの作成hook_form_FORM_ID_alterhook を実装したものです。 。このようにして、他のモジュールによって提供される既存のフォームにフォーム要素を追加できます。この方法で連絡先フォームに追加されたフィールドの情報を使用するには、 hook_mail_alter() の実装を使用して送信メールを変更する必要もあります。 次のガイド は、Drupal 7.の両方の手順を説明します(注記 このコメント

非コードソリューションは、formコンテンツタイプを提供する Webform モジュールを使用して、フォームをコンテンツとしてWebサイトに追加することです。これらのフォームは、Web UIを介して構成できます。これらのフォームから送信された情報に対して、さまざまな処理ステップを構成できます。その1つがメール送信です。カスタムの連絡先フォームに使用するのが一般的な使用例です。 Webformには独自の概念と拡張ポイントが付属しています。一時的な単純なフォームの場合は、より簡単で高速なソリューションであることが判明する可能性がありますが、特定の機能のしきい値に達すると、カスタマイズするにはサイズが大きすぎて複雑になることもあります。 Webformに機能を追加するコストは、そもそもカスタムモジュールの作成を回避することによる利益を上回ります。

20
Pierre Buyle

お問い合わせフォームに使用しているモジュールによって異なります。一部のモジュールは、追加のフィールドを追加するためのプログラミングを必要としないバックエンドインターフェイスを提供します。この機能を備えた非常に人気のあるモジュールはWebformです。

それがなければ、Drupalのフォームは、hook_form_alterフックを使用してカスタムモジュールを作成することで変更できます。mdouleの開発とこの特定のフックの使用に関するチュートリアルはたくさんあります。

1
mesch

コアContactモジュールを使用している場合、 Contact form fields モジュールがDrupal 7。

このモジュールでは、プロファイルモジュールインターフェイスのように、サイト全体の連絡先フォームにフィールドを追加できます。管理者はフィールドを定義でき、それらはサイト全体のお問い合わせフォームで利用できます。特定のニーズが見当たらないため、これらのフィールドは今のところ個人の連絡先フォームでは使用できません。

今何かしたい場合:4つのオプション:

  • ノードタイプを使用して、それを連絡先フォームに変換します。
  • Webフォームを使用します。
  • カスタムモジュールをビルドする
  • またはさらに良い:contact_fieldモジュールをfork/help!プロジェクトページは更新されたばかりなので、少なくとも再び動き始め、コンテンツタイプの場合と同様に、フィールドを追加する非常に素晴らしい方法を提供します。

(これを検索ボットアリーナに追加する;))

1
Robin

以下は サンプルコード で、フォームapiを使用してサイト全体の連絡先フォームにカスタムフィールドを追加する方法を示しています: 新しいフォームフィールドの例

楽しい!

0
Druvision