「プロジェクト構成」で Craft CMS 環境のシステム設定を同期する

前回の記事では、Craft CMS 環境を丸ごと複製する方法をご紹介しました。

既存環境と全く同じ状態を再現したいのであればそれで事足りますが、「テスト実装で開発環境に新規追加したフィールドを本番環境にも適用したい」など、システムの設定内容だけをマージしたいときはその都度管理画面を操作して反映するのが一般的かと思います。

Craft CMS では「プロジェクト構成」と呼ばれる、プロジェクトの設定内容だけを別環境に適用できる仕組みが用意され、2つの環境の差異を比較的簡単に同期できるようになっています。

そこで今回は「プロジェクト構成」機能について解説したいと思います。
これは Craft CMS Advent Calendar 2021 7日目の記事です。

Craft CMS 環境を複製する

前回の記事の文末で「Craft CMS は比較的簡単に既存環境を複製できる」ことに触れました。
そこで、ここでは実際にどうすればいいのか具体的な手順を解説したいと思います。

機能の改修やアップデートの動作検証のため本番サーバーにテスト環境を用意したり、ローカル環境を構築したいときなどに参考にしてください。

これは Craft CMS Advent Calendar 2021 4日目の記事です。

Craft CMS を安全に利用するために

去る10月20日に Movable Type の脆弱性がアナウンスされました。

Movable TypeのXMLRPC APIにおける脆弱性(CVE-2021-20837)に関する注意喚起
https://www.jpcert.or.jp/at/2021/at210047.html

サポートが終了しているとはいえ、Movable Type 4.0 以上であれば速やかに対応が必要です。

Movable Type の XMLRPC API における OS コマンドインジェクションの脆弱性 (CVE-2021-20837) を悪用した攻撃被害に関する対応メモ | WWW WATCH
https://hyper-text.org/archives/2021/12/movable_type_xmlrpc_api_vulnerability.shtml

こちらのケースと同様、自分の身近なところでも被害に遭われた方がいて、従来より深刻だなと捉えています。
心当たりのある方もない方もご自身が携わるサーバーが該当しないか、ぜひ確認してみてください。

とはいえ、システムにバグが存在するのは仕方ありません。
大事なのは「より安全に利用できるよう」対策したり、日頃からメンテナンスすることですよね?

そこで、普段 Craft CMS を利用する際に気をつけていることをまとめてみます。
これは Craft CMS Advent Calendar 2021 1日目の記事です。

Craft CMS 向けのローカル環境を Apple Silicon 対応の Technical Preview 版 Docker Desktop で動くようにしてみた

これは Craft CMS Advent Calendar 2020 25日目の記事です。

去る12月16日に Apple Silicon 搭載の Mac に対応した Tech Preview of Docker Desktop for M1 が公開されました。正直「来年、少しでも早い時期にβ版が出ればいいな」くらいに思っていたので、嬉しい誤算です。

Download and Try the Tech Preview of Docker Desktop for M1 - Docker Blog
https://www.docker.com/blog/download-and-try-the-tech-preview-of-docker-desktop-for-m1/

早速試してみたところ、自分の使用範囲では問題なさそう。。。
ということで、利用にあたって必要となる設定ファイルのカスタマイズ方法について、備忘録を兼ねてまとめてみます。

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

これは Craft CMS Advent Calendar 2020 23日目の記事です。

過去記事の「ローカル環境を Docker で構築してみた」で触れている通り、Docker を利用してローカル環境を用意しています。その際「スキルの問題で sendmail を利用できるようにするのが大変」というネックがあり、外部の SMTP 経由でシステムからの送信テストを行っていました。

とはいえ、「大量に送信テストしたい」とか「オフラインでも動作確認したい」などと考えるうちに、MailHog のコンテナを立ててメールの送受信テストはそれを利用するようになったので、その方法についてまとめてみます。

Craft CMS で編集画面の保存時にサムネイル画像を生成する

これは Craft CMS Advent Calendar 2020 20日目の記事です。

プラグインで拡張している場合を除き、Craft CMS では生成用のコードを記載したテンプレートに初めてアクセスしたタイミングでサムネイル画像が生成されます。とはいえ、ページ内に複数のサムネイル画像を必要としたり、CDN キャッシュに画像変形用の URL ではなく実際のファイルパスを含めたいなど、フロントエンドでリクエストされる前にあらかじめサムネイル画像のファイルを生成しておきたいときがあります。

そこで、Craft 3.5 から搭載された新しいフィールドレイアウト機能を利用して、エントリをはじめ任意のエレメントを管理画面で保存したタイミングでサムネイル画像を生成する方法をご紹介します。

Craft CMS のプラグイン設定をファイルで管理する

これは Craft CMS Advent Calendar 2020 15日目の記事です。

本番環境と開発環境など、実際のプロジェクトでは複数のサーバーで作業することが多いと思います。その際、各種サービスの API キーやフォームの送信先メールアドレスなど、環境ごとにプラグインの設定を調整する必要があるでしょう。

通常であれば管理画面で操作する形になりますが、別環境からダンプしたデータベースをリストアする度に都度修正するのは面倒ですよね?

Craft CMS ではプラグインごとの設定ファイルが存在する場合、そこに定義された内容で設定値を上書きできます。

Craft CMS で元画像が一定のサイズ以上の場合のみ、サムネイル画像を生成する

これは Craft CMS Advent Calendar 2020 9日目の記事です。

Craft CMS ではテンプレートで指定したサイズよりも小さな画像を登録すると、生成されるサムネイル画像が「強制的に引き伸ばした状態」になってしまいます。もちろん最適化した画像をあらかじめ用意できればよいのですが、リニューアル時に既存コンテンツからデータを流用する場合など、難しいときもあるでしょう。

そこで、元画像が一定サイズ以上のときだけサムネイル画像を生成する方法について、ご紹介します。

Twig テンプレートでファイル拡張子を取得する

これは Craft CMS Advent Calendar 2020 5日目の記事です。

Craft CMS の アセット エレメントには、ファイルの種別を表す kind プロパティが存在します。
この分類は公式ドキュメントに記載されている通りで、実際のファイル拡張子とは異なります。

そこで、Twig フィルタを利用して簡単にファイル拡張子を取得する方法をご紹介します。

Craft CMS のエントリを指定した ID 順で取得する

これは Craft CMS Advent Calendar 2020 2日目の記事です。

Craft CMS では、エレメントクエリの id パラメータに複数の ID をセットすることで、目的のエレメントだけを取得できます。

このとき、デフォルトの出力結果は エレメントの投稿日順 となるため、ID の指定順で取得する方法をご紹介します。