Movable Typeプラグイン開発入門:第七回 Transformerプラグインで管理画面UIをカスタマイズする
作成日:2025.03.19
この記事では、Movable Type 管理画面の見た目を変更するために、Transformerプラグインで設定フォームをカスタマイズする方法を解説しています。具体的な文字列置換の実装例と、実運用時に考慮すべきポイントをわかりやすくまとめています。
Movable Type のプラグインの作り方の解説記事、第七回です。
過去の記事は、
- Movable Typeプラグイン開発入門:第一回 基本的なプラグインの作成方法
- Movable Typeプラグイン開発入門:第二回 設定画面の実装と動作確認
- Movable Typeプラグイン開発入門:第三回 管理画面サイドメニューの変更と追加方法
- Movable Typeプラグイン開発入門:第四回 管理画面へのモード追加と設定表示の実装
- Movable Typeプラグイン開発入門:第五回 独立CGIスクリプトで設定表示機能を実装
- Movable Typeプラグイン開発入門:第六回 プラグインのローカライゼーション
今回は、Movable Type の管理画面の見た目を変更する Transformer プラグインの作り方を解説します。
Transformer とは
概ね、Movable Type の管理画面の見た目(UI)を変更するプラグインの総称、みたいな理解で良いと思います。
config.yaml の設定
今回は、MTの「システム」⇒「設定」⇒「全般」画面に、前回までで作成したプラグインの設定項目を表示するようにしてみます。
config.yaml に以下のような設定を追加します。
callbacks:
MT::App::CMS::template_source.cfg_system_general: $SamplePlugin::SamplePlugin::Transformer::hdlr_template_source_cfg_system_general
MT::App::CMS::template_source.cfg_system_general
は、MTの「システム」⇒「設定」⇒「全般」画面のテンプレートである cfg_system_general.tmpl
の内容を変更するためのコールバックです。
「cfg_system_general テンプレートの生成処理前に、$SamplePlugin::SamplePlugin::Transformer::hdlr_template_source_cfg_system_general
の処理を実行するよ」という設定をしています。
※MTのCMSのコアテンプレートファイルは、mt/tmpl/cms/
ディレクトリ内にあります。
Transformer.pm の作成
Transformer プラグインの作成には、MT::App::CMS::template_source.cfg_system_general
のコールバックを実装する Transformer.pm
を作成する必要があります。
Transformer.pm は、 mt/plugins/SamplePlugin/lib/Transformer.pm
に配置します。
Transformer.pm の内容は、以下のようになります。
package SamplePlugin::Transformer;
use strict;
sub hdlr_template_source_cfg_system_general {
my ($cb, $app, $tmpl_ref) = @_;
my $plugin = MT->component('SamplePlugin');
# プラグイン設定を取得
my ($plugin_setting_label, $api_key_label, $api_key, $api_enable_label, $api_enable, $api_enable_display);
eval{
$plugin_setting_label = $plugin->translate('SamplePlugin Settings');
$api_key_label = $plugin->translate('API Key');
$api_key = MT::Util::encode_html($plugin->get_config_value('sample_api_key', 'system'));
$api_enable_label = $plugin->translate('API Enable Setting');
$api_enable = $plugin->get_config_value('sample_api_enable', 'system');
$api_enable_display = '';
if ($api_enable eq '1') {
$api_enable_display = $plugin->translate('Enable');
} else {
$api_enable_display = $plugin->translate('Disable');
}
};
if($@){
my $err_msg = $plugin->translate('Failed to retrieve plugin settings.');
print "Content-Type: text/html;charset=UTF-8\n\n";
print "$err_msg: $@";
exit;
}
my $old = '<form id="sys_conf" action="<mt:var name="script_url">" method="post" onsubmit="return validate(this);">';
my $new = <<HTML;
<h3>$plugin_setting_label</h3>
<p>$api_key_label: $api_key<br>
$api_enable_label: $api_enable_display</p>
<form id="sys_conf" action="<mt:var name="script_url">" method="post" onsubmit="return validate(this);">
HTML
$old = quotemeta($old);
$$tmpl_ref =~ s/$old/$new/;
}
1;
このコードは、MTの「システム」⇒「設定」⇒「全般」画面のテンプレートを変更するためのコードです。
cfg_system_general.tmpl
から、<form id="sys_conf" action="<mt:var name="script_url">" method="post" onsubmit="return validate(this);">
を探して、その部分を $new
に置換しています。
これで、MTの「システム」⇒「設定」⇒「全般」画面に、前回までで作成したプラグインの設定項目を表示するようになります。
動作確認
MTの「システム」⇒「設定」⇒「全般」画面を開くと、設定フォームの先頭に、前回までで作成したプラグインの設定項目を表示されているはずです。
注意事項
MTのコアテンプレートファイルを単純な文字列置換で変更しているため、MTのバージョンアップによってテンプレートファイルの内容が変わると、その都度対応が必要になってしまいます。
このような Transformer プラグインの利用法は、必要最低限に留め、MTのバージョンアップによる影響を受ける可能性があるコードにはできるだけ適用しない方が良いかなと思います。

奈良市を拠点に、25年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。
これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。
【制作会社・企業様向けサポート】
Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。
ぜひ、プロフィールやWeb制作会社様向け業務案内、一般企業様向け業務案内もご覧くださいね。
Movable Typeプラグイン入門:MT::Author で実現するロール付与の手法
2025.03.26
本記事では、Movable Type のプラグイン開発において、MT::Author オブジェクトを利用したユーザーへのロール付与手法を詳しく解説します。具体的なコード例とともに、ユーザー、ブログ、ロールの各オブジェクトの取得方法や、add_role メソッドを活用したロール付与処理の流れを紹介。実務に直結する実装ポイントを分かりやすく解説しています。
Movable Typeプラグイン入門:MT::Authorを活用した新規ユーザー作成の実例解説
2025.03.21
本記事では、Movable Typeプラグインの実装において、MT::Authorオブジェクトを活用したユーザーの新規作成処理の具体例を解説します。コードサンプルを通して、ユーザーの存在確認から新規作成、各種プロパティの設定手順やログ出力まで、実践的なポイントを詳述しています。
Movable Typeプラグイン開発入門:第六回 ローカライゼーションの実装方法
2025.03.13
第六回では、Movable Typeプラグインのローカライゼーションに焦点を当て、多言語対応の具体的な手法を紹介します。多言語対応の実装方法を学び、プラグインの利用者層を広げましょう。
Movable Typeプラグイン開発入門:第五回 独立CGIスクリプトで設定表示機能を実装
2025.03.08
第五回の記事では、前回までの連載内容を踏まえて、設定表示機能を別CGIスクリプトとして実装する方法を詳しく解説します。Perlモジュールの修正手順やCGIスクリプトの構成、動作確認のポイントを具体例とともに紹介します。