プラグインからメニューをどこに追加するかを指定する

  • 投稿日:
  • by
  • カテゴリ:

MTプラグインで、管理画面のメニューに項目を追加するには、レジストリを使います。
そこでは、「view」オプションを使って「どの画面」にメニューを追加するかを指定できます。

my $plugin = new MT::Plugin::Hoge({
    name => 'Hoge',
    registry => {
        applications => {
            cms => {
                menus => {
                    'tools:hoge' => {
                        label       => "Hoge",
                        order       => 800,
                        view        => "blog",
                    },
                },
            },
        },
    },
});

MT->add_plugin($plugin);

こんな感じで、指定するとブログメニューにだけメニューが追加できます。

と、今まではこんな感じで、blogを指定すればブログメニューに、systemを指定すればシステムメニューに、view自体を指定しなければ両方に追加されたのですが、MT5からはビューが増えたこともあり、配列を渡すことで複数のviewを追加できるようになりました。

my $plugin = new MT::Plugin::Hoge({
    name => 'Hoge',
    registry => {
        applications => {
            cms => {
                menus => {
                    'tools:hoge' => {
                        label       => "Hoge",
                        order       => 800,
                        view        => [ "blog", "website", "system"],
                    },
                },
            },
        },
    },
});

MT->add_plugin($plugin);

こんな感じにすると、ブログ、システム、ウェブサイトのメニューに新しくメニューを追加することができるようになります。
ここでは、以下の指定ができます。

user
ユーザーダッシュボード
blog
ブログメニュー
system
システムメニュー
website
ウェブサイトメニュー

この中でも、「user」が非常に面白くて、これを指定すると、本来メニューが存在しないユーザーダッシュボードに追加したメニューがひとつだけぽつんと表示されます。
まさに、「俺メニュー」という感じです。
とても、面白いので、ぜひ試してみてください。