Movable Typeの一覧画面にリストアクションを追加する

Movable Typeの一覧画面にリストアクションを追加する

Posted at February 8,2012 2:55 AM
Tag:[MovableType, Plugin]

Movable Typeのプラグイン開発ネタで、一覧画面にリストアクションを追加する方法です。バージョンは5.1以降です。

「リストアクション」とは、一覧画面内に表示されたチェックボックスをチェックして動作をさせるための機能です。

リストアクションのメニューを表示
リストアクション

1.プラグインのリストアクションを追加する

プラグインのリストアクションは、次のように「プラグインアクション」というoptgroup要素の中に追加したアクションが表示されます。

プラグインのリストアクション

プラグインのリストアクションを追加するには、次の内容をfoo.plなど任意のファイル名でplugins配下にアップロードします。赤色部分がリストアクション定義です。

package MT::Plugin::Foo;
 
use strict;
use base qw( MT::Plugin );
 
my $plugin  = MT::Plugin::Foo->new({
    id          => 'foo',
    name        => 'foo',
    description => 'This is foo',
    version     => '0.1',
    registry => {
        list_actions => {
            entry => {
                foo => {
                    label => 'foo',
                    mode => 'foo',
                    order => 1000
                },
            },
        },
    },
});
MT->add_plugin($plugin);

2.コア機能としてリストアクションを追加する

コア機能としてのリストアクションは次のように、既存のリストアクションと並べて表示でき、1項のリストアクションよりメニューがすっきりします。もちろんメニューからの動作はプラグインで実装可能です。

コア機能のリストアクション

コア機能としてリストアクションを追加するには、次の内容をfoo.plなど任意のファイル名でplugins配下にアップロードします。

package MT::Plugin::Foo;
 
use strict;
use base qw( MT::Plugin );
 
my $plugin  = MT::Plugin::Foo->new({
    id          => 'foo',
    name        => 'foo',
    description => 'This is foo',
    version     => '0.1',
    registry => {
        callbacks => {
            init_request => \&init_request,
        },
    },
});
MT->add_plugin($plugin);
 
sub init_request {
    my ($eh, $app) = @_;
    my $core = MT->component("core");
    $core->registry("list_actions", "entry", "foo",
        {
            label => 'foo',
            mode => 'foo',
            order => 1000,
        });
}
1;

1項との違いは、プラグインのレジストリにlist_actionsを追加するのではなく、init_request実行契機でコア機能($core)のレジストリに追加している点です。

registry()のパラメータにサンプルのようなハッシュ形式を記載すれば、list_actions以外の内容でも追加することができます。

    $core->registry("list_actions", "entry", "foo",
        {
            label => 'foo',
            mode => 'foo',
            order => 1000,
        });

3.注意事項

プラグイン定義はYAMLでも記述することができますが、MT5.12現在では、次のようなYAMLを定義しても一覧画面にリストアクションを追加することができないようです。

id: foo
name: foo
version: 0.01
list_actions:
    entry:
        foo:
            label: 'foo'
            mode: foo
            order: 1000
関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)