Under the Bridge

a Picture of the Late Him

MT4.1:プラグイン作成におけるDBへのフィールド追加について(プラグイン設定編)

2008年5月 5日 16:20 | Writer: yoshi | 記事本文 | コメント(0) | トラックバック(0)

ではプラグインの設定系のデータをDBへ追加する、取り出すには。これの書き方とか、チェックの仕方についてメモ。先にあげた3つのサンプルとは、ちょっと違う。

プラグインデータを追加する

こういうコードがあったとする。

my $plugin = MT::Plugin::AddField->new({
    id => 'AddField',
    key => 'add_field',
    name => 'AddField',
    version => $VERSION,
    description => '<MT_TRANS phrase=\'This Is AddField Sample(MT4LP5 Book)\'>',
    blog_config_template => \&_blog_config_template,
    settings => new MT::PluginSettings([
       ['add_field_label',{ Default => 'NewField' }],
    ]),
    schema_version => 0.02,
});
MT->add_plugin($plugin);

sub init_registry
{
    my $plugin = shift;
    $plugin->registry({
        object_types => {
           'entry' => {
              'add_field' => 'string(255)',
           },
        },
        callbacks => {
           'MT::App::CMS::template_param.edit_entry' => \&_param_transformer,
        },
        tags => {
            function => {
                'AddField' => sub{&_hdlr_add_field;},
            },
        },
    });
    
}

sub _blog_config_template {
    my $tmpl = <<'EOT';
    <mtapp:setting id="add_field_label" label="AddField label:">
    <input type="text" name="add_field_label" id="add_field_label" value="<mt:var name="add_field_label" escape="html">" />
    </mtapp:setting>
EOT
}

sub add_field_label {
    my $plugin = shift;
    my ($blog_id) = @_;
    my %plugin_param;
    $plugin->load_config(\%plugin_param, 'blog:'.$blog_id);
    my $key = $plugin_param{add_field_label};
    $key;
}

データの追加は以下の箇所。phpMyAdminで確認すると、mt_plugindataテーブルへ、plugindata_pluginという既存フィールドへデータ(レコード)が追加される。プラグインの設定画面ページなどからこのフィールドへデータを書き込むと、プラグイン毎(?)毎に個別のレコードが生成される。型はvarchar(50)のようだ。データを見るほうほうがわかんなかった。

    blog_config_template => \&_blog_config_template,
    settings => new MT::PluginSettings([
       ['add_field_label',{ Default => 'NewField' }],
    ]),

データの取り出し方は以下の箇所。

sub add_field_label {
    my $plugin = shift;
    my ($blog_id) = @_;
    my %plugin_param;
    $plugin->load_config(\%plugin_param, 'blog:'.$blog_id);
    my $key = $plugin_param{add_field_label};
    $key;
}

詳しい仕様は、いまのとこはっきりとしない。ちなみにこれを見つけるまでプラグイン試作で大ハマリした。

トラックバック(0)

このブログ記事を参照しているブログ一覧: MT4.1:プラグイン作成におけるDBへのフィールド追加について(プラグイン設定編)

このブログ記事に対するトラックバックURL:

コメントする






Categories
Entries
Feed
スポンサードリンク

parts

フィードメーター - Under the Bridge

あわせて読みたい

なかのひと

2008 yoshi(apstar)