技術資料

Movable Typeプラグイン開発入門:第四回 管理画面へのモード追加と設定表示の実装

作成日:2025.03.07
更新日:2025.03.08

第四回目の連載記事では、Movable Typeの管理画面に新たな機能を追加する方法として、モード定義を使った設定画面の実装を紹介します。前回記事との連携と、Perlモジュールでの設定値取得手法について分かりやすく解説します。

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 の管理画面にログインし、メニューから「サンプルプラグイン」⇒「プラグイン設定」を開いて、プラグインの設定値が表示されていることを確認します。

設定値が表示されていれば、モードの追加と設定画面の表示が正しく動作していることになります。

第五回 独立CGIスクリプトで設定表示機能を実装

2025.03.08追記

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

この記事を書いた人

※上が私です。

奈良市を拠点に、25年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。

これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。

【制作会社・企業様向けサポート】
  • 専任エンジニアのいない企業様に対するシステム面の不安を解消
  • 柔軟な契約形態や短納期での対応により、急なニーズにも迅速にサポート
  • システムの企画段階から運用まで、ワンストップでのサービスを提供

Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。

ぜひ、プロフィールWeb制作会社様向け業務案内一般企業様向け業務案内もご覧くださいね。

Movable Type プラグインで実現するエラー画面・ログイン画面の出力方法

2025.04.10

Movable Typeプラグイン開発において、エラー画面やログイン画面をどのように出力すべきか、その基本手法を具体的なコード例を交えて解説します。MT::App の show_error および show_login メソッドの利用方法や各オプションの効果を理解することで、プラグインにおけるユーザーインターフェースのカスタマイズが容易になります。

Movable Type Perl

Movable Type プラグインによるユーザーアクションメニュー制御 ― condition設定の実践的解法

2025.04.07

Movable Type プラグインを使用したユーザーアクションメニューの制御方法を解説します。特に、config.yamlでの condition 設定の制限とその回避策について、core_user_actions のオーバーライドによる実践的な解決方法を、具体的なコード例とともに紹介します。

Movable Type Perl

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

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

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

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

keyboard_double_arrow_up
TOP