PowerCMSのContactForm アドオンは、アーカイブ(例:ブログ記事やウェブページ)ごとにユニークなフォームを設置できる非常に便利な機能です。
たとえば、ウェブページで講座の申込ページを、複数枚作成するとして、講座ごとに設問を変えることができます。
多様なフォームを作るときに重宝します。
- tmplファイルにより出力されるHTMLが固定化されており、テンプレートから変更できない。
- フォーム管理画面「フォームのメッセージ」に改行を入力すると<br />が自動補完され、好きにHTMLを書くのが難しい。
- でもtmplファイルをいじりたくない。
メッセージはテンプレート記述することにします。
インフォメーション
<$MTSetVar name="form_begin" value="1"$>
確認画面メッセージ
<$MTSetVar name="form_confirm" value="1"$>
エラーメッセージ
<$MTSetVar name="form_error" value="1"$>
註:今回「完了メッセージ」は別途アーカイブとして作成するので「遷移先URL」の項でそのURLを設定。
<$MTTemplateNote value="▼▼フォーム時▼▼"$>
<MTIf tag="MTform_selector">
<MTSetVarBlock name="unnecessary_html"><p class="contact-form-information"><br /></p></MTSetVarBlock>
<MTIf name="form_begin">【インフォメーション用のHTMLを記述】</MTIf>
<MTIf name="form_confirm">【確認画面メッセージ用のHTMLを記述】</MTIf>
<MTIf name="form_error">【エラーメッセージ用のHTMLを記述】</MTIf>
<$MTform_selector
replace=' ',''
regex_replace='/\n/g',''
replace='$unnecessary_html',''
$>
</MTIf>
<$MTTemplateNote value="▲▲フォーム時▲▲"$>
<$MTform_selector$>
は、フォームを呼び出すタグ。カスタムフィールドで任意の名前をつけられます。
replace=' ',''
は、tmplファイルのインデント(半角スペース×4)を削除
regex_replace='/\n/g',''
は、全改行を削除
この2つの置換で、「フォームのメッセージ」の各項目に値があると出力される不要なHTML
<p class="contact-form-information"><br /></p>
を取り出せるので、
replace='$unnecessary_html',''
として空の値に置換。
以上で実装できました。