« キャッシュのディレクトリ | メイン | P::Planetの雛形 »

MTで同じカテゴリーに属しているエントリーをとってくるコンテナタグ

MovableTypeのエントリーで、それと同じカテゴリーに属するエントリーをとってくる場合は「MTTagInvoke」というPluginをよく使うけども、これでもたぶんいける。MTEntrySameCategoryという独自のコンテナタグを作る。とりあえずテンプレートは、

<ul>
  <MTEntrySameCategory>
  <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
  </MTEntrySameCategory>
</ul>

ってな感じでMTEntriesと同じように使える。で、Pluginでそのタグを定義する。

MT::Template::Context->add_container_tag(EntrySameCategory => ¥&samecategory);

sub samecategory{
        my($ctx, $args,$cond) = @_;
        my $entry = $ctx->stash('entry');
        my $blog_id = $entry->blog_id;
        my $category_id = $entry->category->id;
        my @entries = MT::Entry->load(undef, {
                            'join' => [ 'MT::Placement','entry_id',
                            {category_id => $category_id},
                          { blog_id => $blog_id },]
                            });

    local $ctx->{__stash}{entries} = [ @entries ];
    return MT::Template::Context::_hdlr_entries($ctx,
                 { sort_by => $args->{sort_by}, sort_order => $args->{sort_order} },
                        $cond);
}

トラックバック

このエントリーのトラックバックURL:
http://yusukebe.com/mt/mt-tb.cgi/2027

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


ブログSEO対策:track word seo