先月からPowerCMS 5の案件に携わっており、「ステージングサーバー連携機能(Copy2Publicプラグイン)」でCMS環境・ステージング環境・公開環境の3環境に同期する設定も実施しました。
日時を指定してステージ環境・公開環境に同期をした場合、Copy2Publicプラグインの初期状態では以下のようなメールが届きます。
種類: ステージ環境に同期
管理用ラベル: IR情報公開前確認
実行予定日時: 20210119153000
必要最小限の情報は入っているのですが、このままお客様にご覧頂くときっと「日時を見やすくしてほしい」などの声を頂きそうです。そこで分かりやすいメールを目指してカスタマイズを試してみました。
結果仕上がったメールは以下です。
種類: ステージ環境に同期
設定者: LAB安倍
ブログ: IR情報
管理用ラベル: IR情報公開前確認
実行予定日時: 2021年01月19日 15時30分
確認用URL: https://stg.lab-inc.jp/ir/
※上記はブログのURLです。URLの後ろに同期したディレクトリ・ファイル名を付けて確認してください。
同期されたファイル
/data/www/sites/02/files/ir/index.html
/data/www/sites/02/files/ir/assets/pdf/20210120001.pdf
「同期されたファイル」はプラグイン設定画面において「結果を含める」のチェックボックスをオンにしていただくことで挿入されます。その他に、どのブログを同期したのか、誰が同期設定をしたのか、が分かるようにしました。これは私の想像ですが、ステージ環境や公開環境を用意して確認する必要があるサイトであればWebサイトの運用に関わる人も多いのではないかと思われます。そのような状況では誰が操作したかを知りたいのではないか?と考えました。ブログもきっといくつかあるかと想像できます。
テンプレートは以下のようになりました。
種類: <mt:if name="cp_stage">ステージ環境に同期<mt:else>公開環境に同期</mt:if>
設定者: <mt:authordisplayname />
ブログ: <mt:blogname />
管理用ラベル: <mt:var name="cp_label">
実行予定日時: <mt:date language="ja" ts="$cp_ts" />
確認用URL: <mt:if name="cp_stage"><mt:blogurl replace="CMSに設定したウェブサイト/ブログURL","ステージング環境のURL" /><mt:else><mt:blogurl replace="CMSに設定したウェブサイト/ブログURL","公開環境のURL" /></mt:if>
※ブログのURLです。URLの後ろに同期したディレクトリ・ファイル名を付けて確認してください。
※2021年1月26日更新:社内でmt:date
のts
モディファイアに変数cp_ts
を渡すと正規表現を使うことなく日付のフォーマットができる旨を教えて頂き、テンプレートタグを書き換えました。language="ja"
の場合は年月日と時分がフォーマットされて出力されます。
届いたメールのサンプルです。先程と内容が少し違いますが、実際に届いたメールのキャプチャです。
なぜブログ名・設定者名を書けると思ったのか?、それはプラグイン内でblog
とauthor
がargs
にセットされ、build_tmpl内でstash
に格納されていたからです。ドキュメントはもちろん読むのですが、その前にコードを見てしまうこともよくあります。
my %args = (
blog => $cp->blog,
author => $cp->author,
);
my %params = (
cp_label => $cp->label,
cp_ts => $cp->ts,
cp_stage => $cp->stage,
cp_updatefiles => \@updatefiles,
cp_removefiles => \@removefiles,
);
$subject = build_tmpl( $app , $subject, \%args, \%params );
$body = build_tmpl( $app , $body, \%args, \%params );
send_mail( $from, join( ',', @emails ), $subject, $body );
今気付いたのですが、cp_updatefiles
が常に渡ってきていますね。これを使うと同期したファイルをURLの一覧にしてメールに挿入することもできました。
ちなみにテンプレートに誤りがある、使えないタグが書かれているなどの場合はテンプレートが正しく処理できずエラーとなってメールは届きません。ログにエラーが残ります。分かりやすい結果通知メール作成のヒントになれば幸いです。