Skip to content

Instantly share code, notes, and snippets.

@KIASMA
Last active December 14, 2015 18:19
Show Gist options
  • Select an option

  • Save KIASMA/5128225 to your computer and use it in GitHub Desktop.

Select an option

Save KIASMA/5128225 to your computer and use it in GitHub Desktop.
PowerCMSのContactFormを用いてフォームを作成する場合に、自在にメッセージを挿入する方法

PowerCMSのContactFormを用いてフォームを作成する場合に、自在にメッセージを挿入する方法

ContactForm アドオンとは

PowerCMSのContactForm アドオンは、アーカイブ(例:ブログ記事やウェブページ)ごとにユニークなフォームを設置できる非常に便利な機能です。

たとえば、ウェブページで講座の申込ページを、複数枚作成するとして、講座ごとに設問を変えることができます。

多様なフォームを作るときに重宝します。

少し困っている点

  • tmplファイルにより出力されるHTMLが固定化されており、テンプレートから変更できない。
  • フォーム管理画面「フォームのメッセージ」に改行を入力すると<br />が自動補完され、好きにHTMLを書くのが難しい。
  • でもtmplファイルをいじりたくない。

tmplファイルを変更せずに自在にメッセージを挿入する方法

0)前提条件

メッセージはテンプレート記述することにします。

1)フォーム管理画面「フォームのメッセージ」各設定項目に変数をセット

インフォメーション

<$MTSetVar name="form_begin" value="1"$>

確認画面メッセージ

<$MTSetVar name="form_confirm" value="1"$>

エラーメッセージ

<$MTSetVar name="form_error" value="1"$>

註:今回「完了メッセージ」は別途アーカイブとして作成するので「遷移先URL」の項でそのURLを設定。

2)ウェブページ等のアーカイブテンプレートに下記を記述

<$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',''

として空の値に置換。

以上で実装できました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment