MT4.xプラグイン作成/プラグイン管理画面の作成 http://www.ark-web.jp/sandbox/wiki/1124.html
プラグインの管理画面を作成するには、プラグインのnewでconfig_template、system_config_template、blog_config_templateで管理画面のテンプレートファイルを指定し、settingsで設定値を定義します。
config_template、system_config_template、blog_config_templateの違い †
config_template、system_config_template、blog_config_templateはスコープの違いで使い分けます。
- config_template
- システムレベルスコープ、ブログレベルスコープ共通
- system_config_template
- システムレベルスコープ
- blog_config_template
- ブログレベルスコープ
settings †
管理画面で設定する設定値を定義する。keyとデフォルト値、スコープを定義できる。
settings => new MT::PluginSettings([ ['option1', { Default => 'default_setting' }], ['option2', { Default => 'system_default', Scope => 'system' }], : [key, { Default => デフォルト値, Scope => スコープ(system or blog) }], ])
Scopeは'system'でシステムレベルスコープ、blogでブログレベルスコープになります。
setter, getter †
$plugin->set_config_value($key, $value[, $scope]);でkeyの値をセットできる。
$plugin->get_config_value($key[, $scope]);でkeyの値を取得できる。
$scopeではsystemかblogを指定できる。
サンプル †
plugin本体
my $plugin = new MT::Plugin::HelloToConfigPerson({ : system_config_template => 'system_config.tmpl', settings => new MT::PluginSettings([ [ 'target', { Default => 'Someone', Scope => 'system' }], ]), }); sub init_registry { my $plugin = shift; $plugin->registry({ 'tags' => { function => { HelloTo => \&_HelloTo, }, }, }); } sub _HelloTo { my $ctx = shift; my $args = shift; my $cfg = MT::ConfigMgr->instance; MT->set_language($cfg->DefaultLanguage); return 'Hello, ' . $plugin->get_config_value('target'); }
テンプレート
<div> <h3>誰に挨拶する?</h3> <div> <h4>挨拶する人の名前</h4> </div> <div class="plugin-tabs-content"> 挨拶する人の名前を指定します。デフォルトではSomeoneになります。 <input type="text" name="target" value="<mt:var name="target">" class="rb" /> </div> </div>
システムレベルスコープで定義しているので、[システムメニュー]->[プラグイン]の当該プラグインの管理画面から設定できるようになる。
サンプルダウンロード †
tag: Movable Type、MT、MTPlugin