Craft CMS ではシステムの一般設定を config/general.php
に定義します。
従来であればここに各種サービスの API Key であったり、ページ分割のデフォルト件数であったり、ユーザー定義のカスタム設定を自由に追記することができました。ところが、Craft 4 からカスタム設定を別ファイルに定義する形となりました。
そこでカスタム設定の定義方法について、ご紹介します。
これは Craft CMS Advent Calendar 2022 11日目の記事です。
config/general.php に定義できるのは?
公式ドキュメントの Geenral Settings
に記載されている項目だけ、と考えておくのが無難です。
General Settings | Craft CMS Documentation | 4.x
https://craftcms.com/docs/4.x/config/general.htm
それ以外は、カスタム設定として別ファイルに定義しましょう。
カスタム定義を config/general.php に定義すると、どうなるか?
フロントエンド、管理画面ともに 500 エラーとなります。
An Error occurred while handling another error:
yii\base\UnknownPropertyException: Invalid general config setting: customConfig. You can set custom config settings from config/custom.php. in /pathTo/craft4core/vendor/craftcms/cms/src/config/GeneralConfig.php:3086
Stack trace:
devMode
がオンの環境であれば、このようなエラーメッセージが表示されます。(customConfig
がカスタム設定として追記されています。)
カスタム設定は config/custom.php へ
ユーザー定義のカスタム設定は config/custom.php
を新しく作成し、そこに記述します。general.php と同様、環境ごとに設定を上書きすることもできます。
<?php
use craft\helpers\App;
return [
// Global settings
'*' => [
'sampleKey' => 'カスタム設定のサンプル',
],
// Dev environment settings
'dev' => [
'sampleKey' => App::env('SAMPLE_VALUE'),
],
];
.env
の値を参照したければ、App::env
を利用しましょう。
テンプレートからカスタム設定を参照するには
一般設定とカスタム設定の参照方法はほとんど一緒ですので、あわせて覚えてしまいましょう。
config/general.php の場合
craft.app.config.general.
に続けて、取得したい項目名を指定します。
{{ craft.app.config.general.timezone }}
config/custom.php の場合
craft.app.config.custom.
に続けて、取得したい項目名を指定します。
{{ craft.app.config.custom.sampleKey }}
最後に
今回は Craft 4 から変更になったユーザー定義のカスタム設定の記述方法についてご紹介しました。
Craft 3 に慣れているとアップグレードの際にエラーになりがちですので、ご注意ください。