個別エントリーアーカイブに同一カテゴリーのエントリーを表示
カテゴリー:[MTカスタマイズ]
MovableTypeで個別エントリーアーカイブに同一カテゴリーのエントリーを表示するのは、プラグインのMTTagInvokeか、Ogawa::MemorandaさんのEntryCategoryEntriesを使用するのが多いかと思います。
ただ、どちらも静的ページで構築していると過去の記事全てには最新のエントリーが反映されません。
やっぱり、アーカイブを使用するしかなさそうなので変更しました。
この方法の前提としてページがPHPで生成されていることが必要です。iframeをしようすればHTMLファイルでも可能ですが、エントリーが増えると縦のサイズが変わりますのでその都度変更しなければなりません。これはめんどうですね。
ページをPHPで生成するのは、環境設定.設定 → 公開 → アーカイブの拡張子を「php」に変更します。
まず、テンプレートのアーカイブでメニュー表示用のテンプレートを作成します。
テンプレート名は適当に、「カテゴリーエントリーズ」とでも。
<ul>
<MTEntries lastn="10" sort_order="ascend">
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTEntries>
</ul>
テンプレートの中身はこんな感じです。
そして、環境設定.設定 → 公開 → 出力フォーマットで追加したテンプレートをマッピングで新規作成します。
マッピングのパスは、「カスタマイズをする」を選択して
cat/<$MTCategoryLabel dirify="1"$>.php
と、アーカイブパス以降のパスを設定し、ファイル名はカテゴリー名にしています。
ファイル名をカテゴリーにしているのはこのサイトでは、カテゴリー名に英数字のみを使用しているのでファイル名としています。カテゴリー名に全て日本語使っている場合は”dirify”も意味がありません。
”dirify”というのは、カテゴリ名をファイル名に変換させるもののようで、この変換方式は、全角文字とか特殊記号とかを省いて、ファイル名に使える半角英数字だけに変換するというものになっています。
そして、読み込むべき個別アーカイブテンプレートで、
<?php
require "<$MTBlogURL$>cat/<$MTCategoryLabel dirify="1"$>.php";
?>
として、PHPファイルを読み込ませています。
<$MTBlogURL$>を使用してフルパスで読み込ませているのですが、相対パスでも可能な場合もあります。
これで、再構築すればできあがりです。エントリー一覧部分については、CSSで自由にスタイルを設定すればOKです。
同一カテゴリーのエントリーページには、全て同じ表示になります。
トラックバック
このエントリーのトラックバックURL:


