「WordPressで学ぶPHP(3)関数編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」の続編にあたり、PHP組み込みの関数や、独自の関数を作る方法などを解説します。
Kindle本で、定価400円です。
メールフォームプラグインV1.20(その11・メールフォームのAjax化)
メールフォームプラグインでは、メールフォームをAjax化して、ページ遷移が起こらないようにすることもできます。
今日はその方法を解説します。
1.prototype.jsのインストール
メールフォームのAjax化では、prototype.jsを利用します。
こちらのページからprototype.jsをダウンロードし、Blogの出力先ディレクトリにアップロードします。
2.メールフォームテンプレートのヘッダー部分の書き換え
次に、メールフォームのテンプレートのヘッダー部分(<head>~</head>)に、以下を追加します。
<script type="text/javascript" src="<$MTBlogURL$>prototype.js"></script>
<script type="text/javascript">
<!--
function mail_ajax(mode)
{
$("send_status").style.display = 'block';
document.mail_form.mail_preview.disabled = true;
document.mail_form.mail_post.disabled = true;
var params = Form.serialize("mail_form");
if (mode == "post") {
params += "&mail_post=1";
}
else if (mode == "preview") {
params += "&mail_preview=1";
}
new Ajax.Request("<$MTCGIPath$>plugins/MailForm/mt-mail-form.cgi",
{ method : "post",
parameters : params,
onComplete : displayMailResult,
onFailure : failureMailResult });
return false;
}
function displayMailResult(obj)
{
document.mail_form.mail_preview.disabled = false;
document.mail_form.mail_post.disabled = false;
$("send_status").style.display = 'none';
$("ajax_mail").innerHTML = obj.responseText;
}
function failureMailResult(obj)
{
alert('メールの処理が失敗しました。');
document.mail_form.mail_preview.disabled = false;
document.mail_form.mail_post.disabled = false;
$("send_status").style.display = 'none';
}
//-->
</script>
3.フォーム部分の書き換え
次に、メールフォーム/送信前確認/送信エラーの各テンプレートのフォーム部分を、以下のように書き換えます。
・IDの割り当て
formタグに「id="mail_form"」のアトリビュートを追加して、IDを割り当てます。
・タグの追加
フォーム内に以下のタグを追加します。
<input type="hidden" id="ajax" name="ajax" value="1" />
・「送信」「確認」ボタンの変更
「送信」および「確認」ボタンの部分を、以下のように変更します。
<input type="button" name="mail_preview" id="mail_preview" accesskey="v" value="確認" onclick="return mail_ajax('preview');" />
<input type="button" name="mail_post" id="mail_post" accesskey="s" value="送信" onclick="return mail_ajax('post');" />
4.Ajax化する部分をdivタグで囲む
次に、メールフォームテンプレートの中で、Ajaxによって表示を切り替えたい部分を、「<div id="ajax_mail">」と「</div>」のdivタグで囲みます。
5.状況表示用のdivタグを追加
次に、「送信」や「確認」のボタンをクリックしたときに、メッセージを表示するための部分を作ります。
メールフォームテンプレートの中で、上の4.の</div>タグの後あたりに、以下のタグを追加します。
<div id="send_status" style="display : none;"> <p>メールの処理中です...</p> </div>
なお、divタグの中の部分は、ご自分で好きなメッセージに変えることができます。
6.送信前確認等のテンプレート・モジュールの書き換え
次に、送信前確認/送信エラー/送信完了の各テンプレート・モジュールを書き換えます。
これらのテンプレートモジュールには、Ajaxで表示する部分(上の4.のdivタグの内部に表示する部分)だけを入れます。
7.Ajax化のサンプルメールフォーム
以下をクリックすると、Ajax化したメールフォームのサンプルをダウンロードすることができます(MT標準テンプレートをベースにしたもの)。
8.前後のエントリー
メールフォームプラグインは解説が長いので、エントリーを複数に分けています。
前後のエントリーは以下のリンクで参照することができます。
前のエントリー(その10・メール本文のカスタマイズ)
次のエントリー(その12・サイドバー用Ajaxメールフォーム)
また、サイドバーの「関連するエントリー」の箇所に、メールフォーム関連のエントリーの一覧が表示されていますので、そちらもご利用ください。
