Movable Typeプラグイン開発入門:第四回 管理画面へのモード追加と設定表示の実装
作成日:2025.03.07
第四回目の連載記事では、Movable Typeの管理画面に新たな機能を追加する方法として、モード定義を使った設定画面の実装を紹介します。前回記事との連携と、Perlモジュールでの設定値取得手法について分かりやすく解説します。
Movable Type のプラグインの作り方の解説記事、第四回です。
過去の記事は、
- Movable Typeプラグイン開発入門:第一回 基本的なプラグインの作成方法
- Movable Typeプラグイン開発入門:第二回 設定画面の実装と動作確認
- Movable Typeプラグイン開発入門:第三回 管理画面サイドメニューの変更と追加方法
今回は、Movable Type管理画面にモードを追加して機能を拡張する方法の解説です。
config.yaml の設定
以下は、第二回と第三回の内容を元に、以下の機能を追加したプラグインの config.yaml の内容です。
id: SamplePlugin
name: SamplePlugin
version: 0.4
description: 設定を表示するモードを追加するだけのプラグインです。
author_name: Tatsuya Abe
author_link: https://www.abe-tatsuya.com/
doc_link: https://www.abe-tatsuya.com/document_url/
system_config_template: sampleplugin_setting.tmpl
settings:
sample_api_key:
default:
scope: system
sample_api_enable:
default: 0
scope: system
applications:
cms:
menus:
sampleplugin:
label: サンプルプラグイン
icon: ic_tool
order: 1550
system_permission: administer
sampleplugin:setting:
label: プラグイン設定
order: 10
mode: sampleplugin_setting
view: system
condition: sub { return 1;}
上記の設定では、以下の機能を追加しています。
- プラグインの設定項目として、APIキーと有効無効の設定を追加
- 管理画面のサイドメニューに「サンプルプラグイン」という名前のメニューを追加
- 「サンプルプラグイン」の子メニューとして「プラグイン設定」という名前のメニューを追加
- 「プラグイン設定」をクリックすると、mt.cgi?__mode=sampleplugin_setting というURLに飛ぶ
しかし、この設定だけでは、実際に mt.cgi?__mode=sampleplugin_setting にアクセスしてもエラーが出てしまいます。sampleplugin_setting
というモードでの挙動が何も定義されていないので当然ですね。
というわけで、sampleplugin_setting
というモードを定義する設定を config.yaml に追加します。
applications:
cms:
menus:
sampleplugin:
label: サンプルプラグイン
icon: ic_tool
order: 1550
system_permission: administer
sampleplugin:setting:
label: プラグイン設定
order: 10
mode: sampleplugin_setting
view: system
condition: sub { return 1;}
methods:
sampleplugin_setting: $SamplePlugin::SamplePlugin::PluginSetting::show_setting
上記の設定では、sampleplugin_setting
というモードで実行するメソッドとして、$SamplePlugin::SamplePlugin::PluginSetting::show_setting
を指定しています。
Perlモジュール PluginSetting.pm の作成
次に、show_setting
メソッドを定義した Perl モジュールを作成します。mt/plugins/SamplePlugin/lib/SamplePlugin
ディレクトリを作成し、その中に PluginSetting.pm を作ります。
以下は、show_setting
メソッドを定義した PluginSetting.pm の内容です。
package SamplePlugin::PluginSetting;
use strict;
sub show_setting {
my $app = shift;
my $plugin = MT->component('SamplePlugin');
my %param;
eval{
# プラグイン設定を取得
$param{api_key} = $plugin->get_config_value('sample_api_key', 'system');
$param{api_enable} = $plugin->get_config_value('sample_api_enable', 'system');
};
if($@){
print "Content-Type: text/html\n\n";
print "プラグイン設定の取得に失敗しました。: $@";
return;
}
$app->load_tmpl('sampleplugin_showsetting.tmpl', \%param);
}
1;
上記の内容では、プラグインの設定値を取得して、テンプレートsampleplugin_showsetting.tmpl
を出力するようにしています。
テンプレートファイル sampleplugin_showsetting.tmpl の作成
最後に、sampleplugin_showsetting.tmpl
を作成します。
mt/plugins/SamplePlugin/tmpl
ディレクトリの中にsampleplugin_showsetting.tmpl
を作ります。
以下は、sampleplugin_showsetting.tmpl
の内容です。
<mt:include name="include/header.tmpl" page_title="SamplePlugin 設定確認">
<p>APIキー: <mt:var name="api_key" encode_html="1"></p>
<p>API有効化:
<mt:if name="api_enable" eq="1">
有効
<mt:else>
無効
</mt:if>
</p>
<mt:include name="include/old_footer.tmpl">
上記の内容は、プラグインの設定値を表示するだけのシンプルなテンプレートです。
動作確認
以上の設定を行った後、Movable Type の管理画面にログインし、メニューから「サンプルプラグイン」⇒「プラグイン設定」を開いて、プラグインの設定値が表示されていることを確認します。
設定値が表示されていれば、モードの追加と設定画面の表示が正しく動作していることになります。
Movable Typeプラグイン開発入門:第五回:独立CGIスクリプトで設定表示機能を実装
2025.03.08
第五回の記事では、前回までの連載内容を踏まえて、設定表示機能を別CGIスクリプトとして実装する方法を詳しく解説します。Perlモジュールの修正手順やCGIスクリプトの構成、動作確認のポイントを具体例とともに紹介します。
Movable Typeプラグイン開発入門:第三回 管理画面サイドメニューの変更と追加方法
2025.03.06
第三回の記事では、Movable Type管理画面のサイドメニューの変更・追加方法について解説します。既存メニューの名称変更から新規子メニュー・新規メニューの追加まで、具体的なYAML設定例をもとに詳しく紹介します。
Movable Typeプラグイン開発入門:第二回 設定画面の実装と動作確認
2025.03.05
Movable Typeプラグイン開発連載の第二回です。前回の記事に続き、config.yamlに設定画面用の情報を追加し、設定テンプレートファイルの作成と動作確認について詳しく解説します。
Movable Typeプラグイン開発入門:第一回 基本的なプラグインの作成方法
2025.03.04
初めてMovable Typeのプラグインを開発する方のために、基本的なプラグインの作成手順を解説する連載記事の第一回です。プラグインの設定ファイルの詳細やトラブルシューティングのポイントも含めて説明します。