個別アーカイブに同一カテゴリリストを作る

個別アーカイブの中に同一カテゴリのリスト一覧を表示する方法です。サンプルはこのページの↓の方に、表題が「movable type」で1.2.・・・と並んでいますよね。それを実現する方法です。忘れないうちにメモ。

最初にやったのがこの方法

<MTEntries category="<$MTEntryCategory$>">

しかし、案の定、使えなかったです。やはりMTタグの中にもうひとつMTタグを入れるのは無理だったようです。

そこで、PHPを使うことにしました。予め当サイトではアーカイブは全てPHPで作られているので、(ウェブログの設定→アーカイブの設定→アーカイブ・ファイルの拡張子を「php」にするだけで、サーバー対応していれば出来ます。)

まず、新規で「カテゴリー・リスト」というアーカイブを作って内容は

<h2><$MTCategoryDescription$></h2>
<ol><MTEntries lastn="999"> <li class="bold"><a href="<$MTEntryLink$>"><$MTEntryTitle$></a></li> </MTEntries></ol>

のようにします。

次にこのファイルが既存の「カテゴリー・アーカイブ」と作成場所が重ならないように、ウェブログの設定→アーカイブの設定で「カテゴリー・リスト」をカテゴリー・アーカイブとして追加して、作成場所を

<$MTCategoryLabel dirify="1"$>.php

としておきます。これで再構築した際、新しく作られる「カテゴリー・リスト」にはカテゴリごとのリンクが一覧になって出来ます。作成場所は/archives/<カテゴリ名>.phpです。

最後に、このできたリストを個別アーカイブから呼び出します。具体的な記述方法は

<MTEntryCategories><?php require ("./<$MTCategoryLabel dirify="1"$>.php"); ?></MTEntryCategories>

となります。

これで再構築すれば、↓のように個別アーカイブ内で同じカテゴリの一覧を追加できます。なお、実験はしていませんが、一つのエントリーに対して複数のカテゴリを指定していてもできるはずです。なお、require ("./<$MTCategoryLabel dirify="1"$>.php");の部分は環境によって違うと思うので、絶対パスでrequire ("<あなたのブログURL>/archives/<$MTCategoryLabel dirify="1"$>.php");のようにしたほうが確実かもです。その他、いろいろ環境に合わせてみてください。

【追記】
87designさんのThis Category Entries (easy)(日本語)の中の記事でプラグインを使って実現する方法が書かれていました。個人的にプラグインは分からないのであまり好きではないのですが、違和感無い方はこちらでもいいですね。この場合、一つのエントリーに複数のカテゴリを指定していた場合、どのように表示されるかは不明です。


<<同じカテゴリ内の前後の記事を表示  |  MySQLをやめてもとのBerkeleyDBに戻す>>

コメント(0) |コメントする |トラックバック(0)
初版:2005年4月12日 12:58 改定:2009年10月18日 09:47

コメント(0)

コメントする





トラックバック(0)

トラックバックURL:

※スパム防止のため、トラックバックの際は「-del」を削除して送ってください

Twitter Button