システムのコンタクトフォームメッセージ送信プロセスにフックして、生成されたHTMLを変更するにはどうすればよいですか?


7

私は、サイト全体のシステムの連絡先を使用して、訪問者がサイト所有者にメッセージを送信できるようにするDrupalサイトを持っています。訪問者がフォームを送信すると、ユーザーはホームページにリダイレクトされ、上部の読みに付箋が表示されます。

メッセージを送信しました。

私の質問は、このメッセージを変更して出力にHTMLを追加することは可能ですか?理想的には、JavaScriptを追加して、Googleアナリティクスアカウントの仮想ページビューを作成し、それを目標のコンバージョンとして追跡できるようにします。

これは私のテンプレートファイルにあるhook_関数になると思いますが、私はこのプロセスに比較的慣れていません。

回答:


5

もちろん、hook_form_alter()を使用してコールバックを$ form ['#submit']に追加するだけです。フォームのIDを見つける最も簡単な方法は、firebugを使用してフォームを検査することです。この記事には、より詳細な情報があります:http : //www.lullabot.com/articles/modifying-forms-drupal-5-and-6

要するに:

  • お問い合わせフォームのID、「contact_mail_page」などを見つけます(hifenがどのようにアンダースコアに変わるかに注意してください)
  • 新しいカスタムモジュールのいずれかで実装しますyourmodule_form_alter($form_id, &$form, 'contact_mail_page')yourmodule_form_contact_mail_page_alter($form_id, &$form)
  • 参照によって渡される$ form変数を使用して、必要に応じて連絡先フォームを変更します。

お返事をありがとうございます。私はその記事を読みましたが、この解決策には近づいていません。例はありますか?その記事はモジュールのフックを記述する方法を示していますが、Contactフォームはシステムモジュールであるため、変更を加えると、コアアップデートによってその変更が吹き飛ばされます。まだ何かが足りないのかもしれません。
シャナバス2011年

最初の投稿を編集して詳細を追加しました
Alex Weber

更新していただきありがとうございます。私はまだあなたのソリューションを実装する方法について明確ではありません。新しいモジュールを作成して、コードをどこに配置しますか?上で述べたように、私はDrupalを使うのは初めてなので、モジュールを書く必要はありませんでした。たぶん、私はそのwebformモジュールを使用する必要があります。助けてくれてありがとう。
シャナバス2011年

1

Webフォームのそれだけで一般的なサイト全体のフォームの場合、モジュールは、あなたのニーズに、より適しているかもしれません。


追加するつもりです... webformモジュールでは、フォームが正常に送信されたときに使用されるリダイレクトURLを指定できます。これは、通常のコンテンツタイプと同様に、成功ページを簡単に管理できることも意味します。お役に立てれば。ジェームズ

0

@shanabus、あなたは「モジュールのフックを書く」が正しくないと理解しています。システムモジュールを含む既存のモジュールのカスタムフックを作成する主な目的は、動作をオーバーライドすることです。これは、特定のサイトのニーズに合わせてDrupalをカスタマイズする方法です。既存のコードを編集するのではなく、「フック」システムを使用して新しい/置換機能を追加する新しいコードを追加します。

通常、カスタムフック関数は、サイトの作成者がサイト用に特別に作成したカスタムモジュールにあります。より大きなDrupalコミュニティーとは共有しない、サイト固有のカスタマイズを保管する場所と考えてください。Alexが上記で提案しているように、古典的な使用法はhook_form_alterです。

詳細については、フックAPIドキュメントを参照することを検討してください:http : //api.drupal.org/api/drupal/includes--module.inc/group/hooks。これは、新しいDrupal開発者が苦労している概念であることが多いため、概念を理解するために追加の努力が必要であっても落胆しないでください。私たちはみんなここにいます:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.