Movable Type には 環境変数 という仕組みがあり、システムの初期値を設定することができます。
Movable Type の環境変数は、通常mt-config.cgiに記述を行います。
しかし、mt-config.cgi の設定を編集できない状況なのに、どうしても環境変数を設定しなければいけない、という場合がありえます。
このようなときに、簡単なプラグインで環境変数の設定を行うサンプルです。
環境変数を設定するサンプルプラグイン[ConfigDirective]
テストケースとして、[ConfigDirective]というプラグインを作りながら解説します。
ConfigDirectiveの構成は以下のようになります。
Plugins─┐
└─MultiBlog(デフォルトのプラグイン)
└─ConfiDirective(フォルダ)
└── config.yaml(設定ファイル)
[plugins]は、Movable Type のパッケージ内のディレクトリです。[MultiBlog] や [Mardkdown] など、デフォルトで設定されているプラグインが入っているディレクトリとなります。
[ConfigDirective] は、今回作成するプラグインの設定ファイルを含むフォルダとなります。
[config.yaml] は、今回環境変数を設定するファイルとなります。拡張子のとおり、yaml形式で記述します。
以下に、config.yamlの記述例を紹介します。
id: ConfigDirective
name: ConfigDirective
version: 1.00
config_settings:
CGIMaxUpload:
default: 50000
AssetFileExtensions:
default: png, gif
サンプルコードでは、以下の2つの環境変数を設定しています。
CGIMaxUpload
Movable Type からのアップロード可能なファイルの容量を設定する
AssetFileExtensions
Movable Type の管理画面からアップロード可能なファイルの拡張子を設定する
今回の例では
- 50KB以上のファイルのアップロードを許可しない
- 拡張子がpng,gifのファイルのみアップロードを許可し、それ以外は許可しない
という設定になります。
このプラグインを設置後、アイテム管理画面から50kb以上、pngやgif以外の画像をアップロードしようとすると、以下の様に制限がかかります。
50KB以上の画像をアップロードができなくなりました。
拡張子jpgのファイルはアップロードできなくなりました。
環境変数の設定は可能な限り一箇所にまとめたほうが良い
今回はconfig.yamlの記述だけで、Movable Type の環境変数を設定しました。
実際の運用では、環境の設定が複数に分散されると、管理上の見通しが悪くなります。
環境変数などのシステム的な設定は、できる限り一元管理したほうが良いでしょう。
今回の方法はやむを得ない場合の手段、ぐらいにお考えください。
Movable Type のプラグイン開発については、以下のドキュメントも合わせて参照ください。
プラグイン開発ガイド