blogスタッフブログ
HOME > スタッフブログ > CMS > PowerCMS >PowerCMS 5 で気の利いた Copy2Public 通知メールを作ってみた

PowerCMS 5 で気の利いた Copy2Public 通知メールを作ってみた

先月から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:datetsモディファイアに変数cp_tsを渡すと正規表現を使うことなく日付のフォーマットができる旨を教えて頂き、テンプレートタグを書き換えました。language="ja"の場合は年月日と時分がフォーマットされて出力されます。

届いたメールのサンプルです。先程と内容が少し違いますが、実際に届いたメールのキャプチャです。
画面キャプチャ:ステージ環境に日時指定同期をした際の結果メール

なぜブログ名・設定者名を書けると思ったのか?、それはプラグイン内でblogauthorargsにセットされ、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の一覧にしてメールに挿入することもできました。
画面キャプチャ:ステージ環境に日時指定同期をした際の結果メールにURL一覧を出した例

ちなみにテンプレートに誤りがある、使えないタグが書かれているなどの場合はテンプレートが正しく処理できずエラーとなってメールは届きません。ログにエラーが残ります。分かりやすい結果通知メール作成のヒントになれば幸いです。

最近の記事

カテゴリ

アーカイブ

スタッフ別