カテゴリ内でのエントリーナビ
MovableType 2006/04/23 (日) -
エントリー表示すると、前後のエントリーへのLinkが表示される。
カテゴリ関係なしに、日付順に前・次を表示してしまうので、これを「表示しているエントリーと同カテゴリの前後のエントリ」へのLinkを作りたい。
ってことで、まず参考にしたのが
→個別アーカイブに同カテゴリへの前後リンクを設置~MovableType
ここでは「MTAgain」というプラグインも使って「同カテゴリの前後3つのエントリ」へのLinkを作っているが、ウチでは前後1つあればいいのでMTAgainは使わないことにした。
↑のサイトに書いてあるとおりにPreviousNextInCategoryのソースに手を加える。
sub _hdlr_entry_previous_in_category {
my($ctx, $args, $cond) = @_;
my $e = $ctx->stash('entry')
or return $ctx->_no_entry_error('MTEntryPrevious');
my $cat = $e->category
or return '';
if ($ctx->stash('category') ne '') {$cat = $ctx->stash('category');}
my $prev = $e->previous(1);
my $res = '';
sub _hdlr_entry_next_in_category {
my($ctx, $args, $cond) = @_;
my $e = $ctx->stash('entry')
or return $ctx->_no_entry_error('MTEntryNext');
my $cat = $e->category
or return '';
if ($ctx->stash('category') ne '') {$cat = $ctx->stash('category');}
my $next = $e->next(1);
my $res = '';
こうしないと、エントリに複数のカテゴリが割り当ててあった場合に正常に動作しないらしい。
んで、ウチでは↓こんな感じのコードをエントリーアーカイブに追加
<UL><MTEntryCategories>
<LI>カテゴリ<a href="<$MTCategoryArchiveLink$>">[<$MTCategoryDescription$>]</a>内<br />
<MTEntryNextInCategory>↑次のエントリ : <a href="<$MTEntryPermalink encode_html="1"$>" title="<$MTEntryTitle encode_html="1"$>"><$MTEntryTitle$></a>( at <$MTEntryDate format="%x %H:%M"$> )<br /></MTEntryNextInCategory>
→このエントリ : <$MTEntryTitle$><MTEntryPreviousInCategory><br />
↓前のエントリ : <a href="<$MTEntryPermalink encode_html="1"$>" title="<$MTEntryTitle encode_html="1"$>"><$MTEntryTitle$></a>( at <$MTEntryDate format="%x %H:%M"$> )</MTEntryPreviousInCategory></LI>
</MTEntryCategories>
</UL>
そして、エントリが投稿された際、同カテゴリの前のエントリも再構築されるようにMovableTypeのソースをいじる。
(前のエントリに「次エントリ」へのLinkを作るため)
が、ここで躓く。
「lib/MT.pm」をいくら眺めても「return 1 unless $param{BuildDependencies};」の行が見つからない!
バージョン違い??
ググルさんに聞いたところ
→MovableType備忘録: カテゴリ内で前・次リンクを行う
このページを見つけて「lib/MT/WeblogPublisher.pm」を探索したところ ようやくコードを入れる場所を発見。
念のためWeblogPublisher.pmのバックアップをとってコードを挿入してアップロード。
管理画面で全体を再構築(個別エントリだけでいいんだけど)
んむんむ、いい感じだヽ(´ー` )ノ
関連しそうなentry
Author: DebianOoM 2006/04/23 (日) 21:15
