« mt4beta1でBLOG STATSを動かす方法 | Home | TimeLog 20070610 »

June 9, 2007

Movable Type 4 のプラグイン作成での新機能

ボチボチとMT4の内部の構造が分かってきたです。
特に、プラグインはまったく新しい構造が導入されていて、色々と面白いことになっている模様。
プラグインはイコールComponentで、Registryなのです!(分かってない)

MT4は、内部的にRegistryと呼ばれる、様々な設定値をひとまとめにする構造を持っています。
例えば、テンプレートの編集画面に追加された「Insert...」という部分。デフォルトではMTEntriesの挿入が行える機能だけがついていますが、これはRegistryのキー「template_snippets」に「insert_entries」というエントリがひとつだけ入っていて、そのエントリが管理画面に表示されるという仕組みになっています。
そして、当然のごとくプラグイン側からRegistryのキーやエントリ(実際にはネストしたハッシュリファレンスです)を追加することが出来ます。書き方としてはこんな感じでしょうか

package MT::Plugin::CommentSnippet;
 
use strict;
use base qw( MT::Plugin );
 
my $plugin = new MT::Plugin::CommentSnippet({
    name => "CommentSnippet",
    version => '0.1',
});
MT->add_plugin($plugin);
 
sub init_registry {
    my $plugin = shift;
    $plugin->registry({
        'template_snippets' => {
            'comments' => {
                label   => 'comments',
                content => qq{<MTComments lastn="10"></MTComments>},
            },
        },
    });
}
1;

これだけでも、今までのコールバックを利用したりする方法に比べたら楽に感じます。
しかし、さらに簡単な書き方も出来ます。

template_snippets:
    trackbacks:
        label: tbpings
        content: <MTPings lastn="10"></MTPings>

はいyaml来ました。yaml。
pluginsディレクトリ内に適当なディレクトリを作成して、上記のyamlを「config.yaml」という名前で置くだけです。
これは楽です。

更新Pingサーバーのリストも同様に追加出来るのですが、その場合には追加分の項目の設定値の保存まで自動で面倒を見てくれるので、非常に楽です。素で驚きました。

perlのコンパイル済みのコードリファレンスが要求される機能も多いっぽいので、yamlを書くだけでどこまで複雑な機能の追加が実現できるかは分かりません。実際には、Perlで機能のコア部分を書いて、config.yamlでユーザーがプラグインの機能を拡張していく、その橋渡しとしてRegistryが機能するという形になるのでしょうか。
いずれにしても、非常に拡張性が高いシステムになっていると感じました。

追記: extrasディレクトリにそのままのサンプルがありましたね。今気がつきました;-)

2 TrackBacks

TrackBack URL: http://new.aklaswad.com/cgi-bin/mt/mt-tb.cgi/113

はい、昨日はMovable Type 4のテンプレート(に限らず)の拡張を簡単に... Read More

MT4 beta2リリース from Web屋さんのココロえ on June 13, 2007 5:48 PM

Movable Type 4 beta 2がリリース。beta 1をSQLite Read More

Leave a comment

OpenID accepted here Learn more about OpenID

About this Entry

This page contains a single entry by aklaswad published on June 9, 2007 1:03 AM.

mt4beta1でBLOG STATSを動かす方法 was the previous entry in this blog.

TimeLog 20070610 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.