MODXにcfFormMailerを設置

よんどころなき事情により、MODXにcfFormMailerを設置するテストを行いました。 今回の条件は下記
  • 比較的シンプルなフォーム
  • ファイルアップロードなし
  • ログ記録もなし
ということで、基本的にはマニュアルの通りなのですが、ファイル構成がマニュアルとは若干代わっていたのでメモしておきます。

設置方法

  1. Githubからzipをダウンロード
  2. zipを解凍
  3. FTP接続など何らかの方法でMODX設置サーバへアクセスし、/assets/snippets/ディレクトリ内に2.で解凍したファイルの/assets/snippets/内にあるcfFormMailerフォルダを丸ごとアップロード
  4. MODXの管理画面にログインし、以下の情報で新規スニペットを作成
    • スニペット名: cfFormMailer
    • コード: 2.で解凍したファイルのうち、ディレクトリ直下のsnippet.cfFormMailer.phpの内容を丸ごとコピペ
  5. 環境設定として使用する設定をチャンクとして作成
    • チャンク名: 任意(例: cfFormMailerConfig)
    • コード: 2.で解凍したファイルのうち、chunk_sampleディレクトリ内のconfig_chunk.txtの内容を丸ごとコピペ
  6. お問い合わせ用のリソースをコンテナとして作成(デザインテンプレート指定)
  7. 6.で作成したリソースのサブリソースとして以下のリソースを作成
    • 親リソース
      • 本文にスニペットコールを記述。設定読み込みのため、チャンク名をconfigパラメータとして指定する。例えば、[!cfFormMailer?&config=cfFormMailerConfig!]
    • フォーム本体
      • formタグのaction属性はMODXのリソースIDを指定する。例えば、<form method="post" action="[~[*id*]~]">といった具合
      • エラーメッセージは、全体で出すメッセージは<iferror>で括る。例えば、<iferror><p>フォーム内の入力で誤りがあります。<br>訂正して再度送信ボタンを押してください。</p></iferror>といった具合
      • フォームの各項目について
        • 必須チェックはinputタグの属性としてvalid="1"を指定
        • 必須チェックのエラーメッセージは<iferror.(NAME)>で括る。NAMEinputタグのname属性の値。例えば、<input type="text" name="onamae" placeholder="お名前" valid="1">に対しては、<iferror.(onamae)><p class="error">※お名前を入力してください</p></iferror>といった具合
        • フォームの各項目は、上記の必須チェックなどを除けば普通の静的サイトと同じコーディングと同じ
    • 確認画面
      • フォームで入力した値はMODXのプレースホルダでnameの値を指定。上記の<input type="text" name="onamae" placeholder="お名前" valid="1">に対しては[+onamae+]
      • 送信に進む場合も元に戻る場合もformタグで指定。action属性はフォーム本体と同じ。
        • 戻るボタンはname属性の値をreturnとする
        • 例えば<form action="[~[*id*]~]" method="post"><input type="submit" value="送信する"></form> <form action="[~[*id*]~]" method="post"><input type="submit" name="return" value="戻る"></form>といった具合
    • 送信完了画面
    • 管理者宛メールテンプレート
      • メールテンプレートは管理者宛も自動返信もリソースの本文に入力した内容がメール本文になる
      • こちらもフォームで入力した値はMODXのプレースホルダで指定。確認画面と同じ。
        `となる
    • 自動返信メールテンプレート
      • これらのサブリソースはいずれもデザイン(blank)で指定なし
  8. 5.のチャンクのコード(=設定内容)のうち宛先メールアドレスなどを実際の内容に編集
    • 設定できる項目はcfFormMailerマニュアル v1.3を参照
    • フォーム本体、確認画面、送信完了画面、管理者宛メールテンプレート、自動返信メールテンプレートは7.で作成したリソースIDを=の右側に入力して保存すると反映される

備考

2014年6月くらいに一度試した際は、下記条件を満たすとリセットボタンの中の文字列(inputタグのvalueの値)が消えるというバグがありました。
  1. 入力必須フィールドを入力しなかったためエラーになった場合
  2. ちゃんと入力し内容確認ページに進んだ後に「戻る」ボタンで戻った場合
が、Githubのコミットログを見たところ2016年8月15日の変更で本体がそのバグに対応しており、今回実験した際はそのバグは改称されていました。 念のため合わせてメモ。

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。