&pgid();
#contents
プラグインの管理画面を作成するには、プラグインのnewでconfig_template、system_config_template、blog_config_templateで管理画面のテンプレートファイルを指定し、settingsで設定値を定義します。
** config_template、system_config_template、blog_config_templateの違い [#ae7bbf08]
config_template、system_config_template、blog_config_templateはスコープの違いで使い分けます。
:config_template|システムレベルスコープ、ブログレベルスコープ共通
:system_config_template|システムレベルスコープ
:blog_config_template|ブログレベルスコープ
** settings [#fa32dab4]
管理画面で設定する設定値を定義する。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 [#gb4639a5]
$plugin->set_config_value($key, $value[, $scope]);でkeyの値をセットできる。
$plugin->get_config_value($key[, $scope]);でkeyの値を取得できる。
$scopeではsystemかblogを指定できる。
** サンプル [#i501388c]
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>
システムレベルスコープで定義しているので、[システムメニュー]->[プラグイン]の当該プラグインの管理画面から設定できるようになる。
** サンプルダウンロード [#w29c4705]
&ref(HelloToConfigPerson.zip);
#blikifooter(進地);
tag: [[Movable Type>tag/Movable Type]]、[[MT>tag/MT]]、[[MTPlugin>tag/MTPlugin]]