Craft CMS のテストメールを Mailpit で受信する

過去記事の「Craft CMS のテストメールを MailHog で受信する」で触れている通り、これまではローカル環境のテストメール受信を MailHog でまかなっていました。

「システムからの通知メールを受信する」程度の目的であれば、このまま利用し続けても問題なさそうではあるものの。次の理由から、Mailpit へ移行することにしました。

  • MailHog は2年以上更新されていない(更新する予定もない模様)
  • MailHog は ISO-2022-JP など、日本語のエンコーディングにデフォルトで対応していない(送信前に、明示的にエンコード処理を挟む必要があった)

そこで、今回は Mailpit への移行手順をまとめてみます。

Movable Type でエクスポートしたテーマの差分を効率的に比較する

Movable Type や PowerCMS(X を除く)で作成したテンプレートを「テーマ」としてエクスポートすると、デフォルトのファイル名は template_N.html(N は、テンプレート ID)となります。 この状態だと「どのファイルが、どのテンプレートに対応しているのか」が判断しづらいため、本番環境の最新データと手元のファイルとの差分を比較するのが手間・・・といった経験をお持ちの方は、少なからずいらっしゃることでしょう。

そこで、生成されるファイル名を制御できる「テンプレート識別子」を設定しておくと便利です。
Movable Type なら MTAppjQuery の導入、PowerCMS ならデバッグモードを有効にするだけで、テンプレートの編集画面で任意の「テンプレート識別子」をセットできるようになります。

MTAppjQuery でテンプレート識別子を設定可能にするには | プラグイン | Hei Blog
https://hei-a.net/blog/movable_type/plugin/template-identifier.html

テンプレートの識別子を変更したい | トラブルシューティング | ドキュメント | PowerCMS - カスタマイズする CMS
https://www.powercms.jp/products/document/troubleshooting/change-template-identifier.html

これで解決できればよいのですが、テーマを再適用したり、個別に新規テンプレートを作成したタイミングで意図せず template_N.mtml が生成されてしまうことがあります。開発フェーズであれば自由に調整できるものの、運用フェーズではすべてを管理するのが難しいこともしばしば。。。

そこで、ファイル名の整合性が取れない状態でエクスポートされた MTML ファイルを PHP でリネームする仕組みを考えてみました。

Craft CMS のエントリフィケーション計画について

2023年3月7日、Craft CMS の公式ブログにて、エントリフィケーション計画が発表されました。

The Entrification Plan | Craft CMS
https://craftcms.com/blog/entrification

これは「独立したエレメントタイプとして存在するカテゴリ・タグ・グローバルセットを将来的にエントリへ統合する」というもので、Craft 4.4 から自動変換するためのコンソールコマンドが用意されています。

最終的に Craft 6 で完了する計画ではあるものの、余裕があるうちに対応しておいた方が良さそうですね。

そこで、エントリフィケーション計画の概要と対応方法についてご紹介します。
これは Craft CMS Advent Calendar 2023 25日目の記事です。

Craft CMS で MySQL のテーブル文字コードと照合順序を変更する

先日、Craft CMS のデータベースを眺めてたところ、MySQL 8.0 でテーブルの文字コードが utf8mb3、照会順序が utf8mb3_general_ci になっている場合があることに気づきました。

文字コードは utf8 もしくは utf8mb4 を指定しているハズなので、にわかに不安が。。

公式リファレンスを確認したところ、そもそも utf8utf8mb3 のエイリアスで、MySQL 8.0 以降は非推奨なんですね。 将来的に削除される可能性があるということで、あらかじめ utf8mb4 に変更しておいた方が良さそうです。

MySQL :: MySQL 8.0 リファレンスマニュアル :: 10.9.2 utf8mb3 文字セット (3 バイトの UTF-8 Unicode エンコーディング)
https://dev.mysql.com/doc/refman/8.0/ja/charset-unicode-utf8mb3.html

そこで、今回は MySQL のテーブル文字コードと照合順序を変更する方法をご紹介したいと思います。
これは Craft CMS Advent Calendar 2023 23日目の記事です。

Craft CMS の二要素認証用デバイスが使えなくなった場合の対処法について

Craft CMS で二要素認証を導入する場合、3rd Party の Two-Factor Authentication プラグインを利用します。

Craft 3 / Craft 4 に対応しているフリーのプラグインで、管理者はインストール後に適用したいユーザーグループへプラグインのアクセス権限をセットするだけで済みます。一方、二要素認証を利用したいユーザーは、管理画面のプラグイン設定画面にある QR コードを認証アプリで読み込み、コード認証を行えばアカウントが保護されます。

このように導入と利用自体は簡単にできるものの、万一デバイスが使えなくなった場合、どうすればいいのでしょうか?

今回は、二要素認証用デバイスが使えなくなった場合の対処法について考えてみます。
これは Craft CMS Advent Calendar 2023 21日目の記事です。

Craft CMS で日本語タイトルをローマ字変換して slug にセットする(後編)

前編に引き続き、Craft CMS で日本語タイトルをローマ字変換して slug にセットする方法について考えていきますが、 実装にあたって欲しい機能は次の3つです。

  • エントリのタイトルをローマ字変換して slug にセットする
  • エントリの初回保存時のみ、実行する
  • slug に日本語が含まれない場合は、何もしない

このくらいであれば、モジュールとして用意するのが手軽で良さそうですね。

では、具体的な手順を見ていきましょう。
これは Craft CMS Advent Calendar 2023 20日目の記事です。

Craft CMS で日本語タイトルをローマ字変換して slug にセットする(前編)

先日、X(旧 Twitter)でこんなポストを見かけました。

Craft CMS では、置換されたり除去される文字が一部あるものの、エレメントのタイトルとして入力された日本語テキストは、そのまま Slug にセットされてしまいます。

URI 文字列に日本語テキストが含まれるのを避けるには、slug の替わりに ID を利用したり、slug を半角英数で手入力する運用ルールを設けたりといった、対応が必要です。

そんな工夫をしなくても、自動的にローマ字変換できるのであれば確かに便利そうですね。

そこで、Craft CMS で日本語タイトルをローマ字変換して slug にセットする方法について、考えてみました。
これは Craft CMS Advent Calendar 2023 19日目の記事です。

【Craft 4.4 の新機能】プライベートプラグインについて

Craft CMS でカスタムプラグインを作成する場合、これまでプラグインのハンドルをユニークにする必要がありました。
作成したプラグインを Plugin Store に公開する際に必要となるルールで、ライセンスチェックに利用されるためです。

単純な普通名詞を避けてフレーズにしたり、ベンダーごとに固有な接頭辞を付けるのが一般的だったのですが、Plugin Store に公開しないのであれば必要がないとも言えます。

そこで、今回は Craft 4.4 から可能になったプライベートプラグインについて、ご紹介したいと思います。
これは Craft CMS Advent Calendar 2023 16日目の記事です。

【Craft 4.5 の新機能】グローバル変数 _globals について

Craft CMS で変数を定義する場合、 {% set %} タグでセットします。
このとき、{% for %} など一部のタグ内で新しく定義したものはローカルスコープになるため、外からアクセスしたい場合はテンプレート冒頭で初期化しておくといった工夫をしていました。

グローバル変数を利用することで、細かいことを気にする必要がなくなるとしたら便利ですよね?

そこで、今回は Craft 4.5 から新たに加わったグローバル変数 _globals の使い方をご紹介したいと思います。
これは Craft CMS Advent Calendar 2023 14日目の記事です。

【Craft 4.5 の新機能】Element Index のリラベルについて

Craft 4.5 から、フィールドレイアウト上で設定したラベルで Element Index のフィールド名が上書きされるようになりました。

これまで、以前ご紹介した自作プラグインのインストールが必要だったものが、標準機能として搭載された形です。
個人的に待ち望んでいた機能なので、とても嬉しいですね。

そこで、Element Index のリラベル機能について、改めて確認しておこうと思います。
これは Craft CMS Advent Calendar 2023 13日目の記事です。