2004年08月20日

カテゴリ内の次・前リンク

前々から便利だなと思っていたカテゴリ内を渡り歩くリンクをつけることにした。
使うプラグインはPrevious and next in categoryプラグイン。
参考にさせていただいたのは、Ruby siteさま&nlog(n)さま。

まず以下のサイトからプラグインをダウンロード。
phil ringnalda dot comさま

複数Category用編集
ダウンロードしてきた「PreviousNextInCategory.pl」を複数Categoryに対応するため、
Ruby siteさまの複数Categoryなページめくりに従い11行目と35行目あたりの以下の部分を修正。
sub _hdlr_entry_previous_in_category {

:

     my $cat = $e->category

               or return '';
     if ($ctx->stash('category') ne '') {$cat = $ctx->stash('category');}

     my $prev = $e->previous(1);
:

sub _hdlr_entry_next_in_category {

:

     my $cat = $e->category

               or return '';
     if ($ctx->stash('category') ne '') {$cat = $ctx->stash('category');}
赤字部分を追加します。
修正したら、アスキーモードでpluginフォルダにFTPします。
前後の個別アーカイブ再構築対応
このプラグインは導入しても同カテゴリの前後のアーカイブは再構築されないという問題点があるらしい。
そこで次にnlog(n)さまを参照しながら前後の個別アーカイブの再構築を組込むために、/lib/MT.pmの修正を行ないます。
     return 1 unless $param{BuildDependencies};
     my $cats = $entry->categories;

# previous

     for my $cat (@$cats) {

           my $prev = $entry->previous(1);

          if ($prev && !$prev->is_in_category($cat)){

               do {

                    $prev = $prev->previous(1);

               } while ($prev && !$prev->is_in_category($cat));

               if ($prev) {

                    $mt->_rebuild_entry_archive_type(Entry => $prev,

                         Blog => $blog,

                         ArchiveType => 'Individual')

                         or die $mt->errstr;

               }

          }

# next

          my $next = $entry->next(1);

          if ($next && !$next->is_in_category($cat)){

               do {

                    $next = $next->next(1);

               } while ($next && !$next->is_in_category($cat));

               if ($next) {

                    $mt->_rebuild_entry_archive_type(Entry => $next,

                         Blog => $blog,

                         ArchiveType => 'Individual')

                         or die $mt->errstr;

               }

          }

     }
## Rebuild previous and next entry archive pages.
この改造を施すともしこのプラグインを使用していなくても同じカテゴリの前後の記事を再構築してしまうそうなので、プラグインをやめたときには、この改造は元に修正しておいたほうが良いとのこと。
修正をしたら、アスキーモードでMT/libにFTPします。
テンプレートの修正
さてもう一息です。
個別エントリーアーカイブテンプレートの修正をします。
私が書いたのは次の通りです。
<p id="menu">

<MTEntryPrevious>

<a href="<$MTEntryPermalink$>">&laquo; <$MTEntryTitle$></a> |

</MTEntryPrevious>

<a href="<$MTBlogURL$>">INDEX</a>

<MTEntryNext>

| <a href="<$MTEntryPermalink$>"><$MTEntryTitle$> &raquo;</a>

</MTEntryNext><BR/ >

<MTEntryCategories>

<MTEntryPreviousInCategory>

<a href="<$MTEntryPermalink category_type="Individual"$>">&laquo;

<$MTEntryTitle$></a> |

</MTEntryPreviousInCategory>

<a href="<$MTCategoryArchiveLink$>"><$MTCategoryDescription$></a>

<MTEntryNextInCategory>

| <a href="<$MTEntryPermalink category_type="Individual"$>"><$MTEntryTitle$> &raquo;</a>

</MTEntryNextInCategory>

</MTEntryCategories>

</p>

これに附随するスタイルシートも直します。一応参考に書いておきます。
お好きなように修正して、再構築してください。
#menu {

     font-size: 8pt;

     color: #8FABBE;

     text-align: center;

     border: 1px dotted #8FABBE;

}

#menu a, #menu a:visited, #menu a:link, #menu a:active {

     font-size: 8pt;

     color: #8FABBE;

     text-decoration: underline;

}

#menu a:hover {

     font-size: 8pt;

     color: #006699;

     text-decoration: underline;

}

Posted luna : 2004年08月20日 11:14 | プラグイン

TrackBackPings

トラックバックを何回もやっても気にしないでいいですよ。こちらで削除しますので。

TrackBack URL>>

カテゴリ内の次・前リンクへのトラックバック一覧

» 個別アーカイブに同一カテゴリへの前後リンクを設置! from 21世紀のアフィリエイト通販生活(on: 2005年02月11日 21:00)

MovableType標準では個別アーカイブに<MTEntryPrevio... READ

Comments




保存しますか?