Movable Type プラグインハンドラでのクエリーパラメータ取得方法

Movable Type プラグインハンドラでのクエリーパラメータ取得方法

Posted at October 11,2010 3:33 AM
Tag:[MovableType, Plugin]

Movable Type プラグインのクエリーパラメータ取得方法です。単なる備忘録です。

例えば、フックポイントcms_pre_saveやcms_post_saveから起動されるハンドラメソッドhdlr_pre_saveやhdlr_post_saveで、起動URLのクエリーパラメータに設定されたブログIDを取得する場合は、次のようにします。

sub hdlr_pre_save {
    my ($cb, $app, $obj, $orig_obj) = @_;
    my $q = $app->param;
    my $blog_id = $q->param('blog_id');
    …後略…

次のコードも同様です。

sub hdlr_pre_save {
    my ($cb, $app, $obj, $orig_obj) = @_;
    my $blog_id = $app->param('blog_id');
    …後略…

ちなみに、MT::App::paramの実装は次のようになっています。

MT::App::param

sub param {
    my $app = shift;
    return unless $app->{query};
    if (@_) {
        $app->{query}->param(@_);
    }
    else {
        wantarray ? ( $app->{query}->param ) : $app->{query};
    }
}

MT::App::paramを起動せず、次の方法でも取得可能です。

sub hdlr_pre_save {
    my ($cb, $app, $obj, $orig_obj) = @_;
    my $q = $app->{query};
    my $blog_id = $q->param('blog_id');
    …後略…
sub hdlr_pre_save {
    my ($cb, $app, $obj, $orig_obj) = @_;
    my $blog_id = $app->{query}->param('blog_id');
    …後略…

$app(MT:App)にはblogメソッドが実装されているので、そこから取得することも可能です。

sub hdlr_pre_save {
    my ($cb, $app, $obj, $orig_obj) = @_;
    my $blog_id = $app->blog->id;
    …後略…

MT::App::blogの実装は次のようになっています。

MT::App::blog

sub blog {
    my $app = shift;
    $app->{_blog} = shift if @_;
    return $app->{_blog} if $app->{_blog};
    return undef unless $app->{query};
    my $blog_id = $app->param('blog_id');
    if ($blog_id) {
        require MT::Blog;
        my $blog = MT::Blog->load($blog_id);
        $app->{_blog} = $blog;
    }
    return $app->{_blog};
}
関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)