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

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

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

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

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

事前準備

サンプルとして管理画面のプラグインストアを Env で検索し、 Environment Label プラグインをインストールします。

プラグインストア > Environment Label

このとき「パッケージ名」枠に記載されている environment-label が別途作成する設定ファイルの名称になりますので、メモしておきましょう。

インストール後の表示サンプル

プラグインのインストールが完了するとメインカラム上部に赤帯の環境名が表示され、どの環境を操作しているのか判別できるようになります。

プラグインの設定画面

設定 > プラグイン からプラグインの設定画面を開き、ラベルのテキストや帯色、文字色を変更してみてください。

やってみる

では、設定ファイルを用意して上書きしてみましょう。先に確認したパッケージ名を利用して config/environment-label.php を作成し、次のコードを記述します。

<?php

return [
    'labelText'  => 'craft3.localEnv',
    'labelColor' => '#9929bd',
];

ここで定義する配列のキーはプラグイン設定の入力項目のハンドルとなります。管理画面のプラグイン設定で実際の DOM を確認し、id="settings-labelText-field" の部分を参考にするとよいでしょう。

プラグイン設定の DOM

ファイルを用意できたら、管理画面のプラグイン設定にアクセスしてみましょう。

上書きされたプラグイン設定画面

メインカラム上部のラベルテキストや帯色が変わり、設定内容も上書きされていることを確認できます。

個人的なオススメ

このままでも問題ありませんが、もう少し汎用性を持たせることでより便利になります。

具体的には config/environment-label.php にセットする値を getenv に書き換えます。ENV_LABEL_TEXT にあたる部分は、他と重複しない「英数大文字とアンダースコア」の組み合わせならなんでも構いません。

<?php

return [
    'labelText'  => getenv('ENV_LABEL_TEXT'),
    'labelColor' => getenv('ENV_LABEL_COLOR'),
];

次に、Craft CMS のインストールディレクトリ直下にある .env を開き、先に指定した定数の値をセットします。

# Environment Label
ENV_LABEL_TEXT  ="craft3.localEnv"
ENV_LABEL_COLOR ="#9929bd"

これで完了です。

まとめ

すべての項目が対応可能という訳ではありませんが、プラグイン設定をファイルで用意すると複数環境の管理がとても楽になります。

さらに、データベースの接続設定などと同様に特定の環境のみに依存する設定を .env ファイルに定義することで、プラグイン設定を上書きするための PHP ファイル自体は使い回しも可能です。

いずれの方法も便利だと思いますので、ぜひお試しください。