技術資料

Movable Typeプラグイン開発入門:第七回 Transformerプラグインで管理画面UIをカスタマイズする

作成日:2025.03.19

この記事では、Movable Type 管理画面の見た目を変更するために、Transformerプラグインで設定フォームをカスタマイズする方法を解説しています。具体的な文字列置換の実装例と、実運用時に考慮すべきポイントをわかりやすくまとめています。

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 Perl

Movable Typeプラグイン入門:MT::Authorを活用した新規ユーザー作成の実例解説

2025.03.21

本記事では、Movable Typeプラグインの実装において、MT::Authorオブジェクトを活用したユーザーの新規作成処理の具体例を解説します。コードサンプルを通して、ユーザーの存在確認から新規作成、各種プロパティの設定手順やログ出力まで、実践的なポイントを詳述しています。

Movable Type Perl

Movable Typeプラグイン開発入門:第六回 ローカライゼーションの実装方法

2025.03.13

第六回では、Movable Typeプラグインのローカライゼーションに焦点を当て、多言語対応の具体的な手法を紹介します。多言語対応の実装方法を学び、プラグインの利用者層を広げましょう。

Movable Type Perl

Movable Typeプラグイン開発入門:第五回 独立CGIスクリプトで設定表示機能を実装

2025.03.08

第五回の記事では、前回までの連載内容を踏まえて、設定表示機能を別CGIスクリプトとして実装する方法を詳しく解説します。Perlモジュールの修正手順やCGIスクリプトの構成、動作確認のポイントを具体例とともに紹介します。

Movable Type Perl

阿部辰也へのお仕事の依頼・お問い合わせ

軽いご相談もお気軽にどうぞ!

個人情報の取り扱いについて *必須 プライバシーポリシーをご確認いただき、同意いただける場合は「同意する」にチェックをしてください。

keyboard_double_arrow_up
TOP