プラグインなしで「最近のトラバをブログ記事ごとにまとめて表示」が出来たので、勢いづいて「同一カテゴリ内での前後リンク」にも挑戦。これはダイナミック用のプラグインもあるので、無理しなくてもいいかな…と思ってたのですが、ダイナミックプラグインはMT4で動かすには少し修正が要るので、面倒な場合用に備えて考えておいてもいいかなと思いました。
ご存じのようにブログ記事内での前後リンクは投稿順になっており、カテゴリとは関係なくつながっています。でもこれを同じカテゴリ内で前後につながるようにしたい場合があるんですよね。それをMTタグだけでやってみます。
タグの見本は以下。ここではサイトの性質上、ダイナミックパブリッシングで問題なく動くが必須条件です。ハッシュや配列は書き方やバージョンによってはダイナミックで動かすのが難しいことがあるので、それらは使わずに出来る方法で考えてみました。opモディファイアを使っているので4.1以上用です。
<MTSetVarBlock name="thisdate"><$MTEntryDate format="%Y%m%d%H%M%S"$></MTSetVarBlock>
<MTSetVarBlock name="ecat"><$MTEntryCategory$></MTSetVarBlock>
<MTSetvar name="prevcount" value="0">
<MTEntries category="$ecat">
<MTIf name="prevcount" lt="1">
<MTSetVarBlock name="prevdate"><$MTEntryDate format="%Y%m%d%H%M%S"$></MTSetVarBlock>
<MTIf name="prevdate" lt="$thisdate">
<MTSetVar name="prevcount" op="++">
<a href="<$MTEntryPermalink$>">« <$MTEntryTitle$></a>
</MTIf>
</MTIf>
</MTEntries>
|
<MTSetvar name="nextcount" value="0">
<MTEntries category="$ecat" sort_order="ascend">
<MTIf name="nextcount" lt="1">
<MTSetVarBlock name="nextdate"><$MTEntryDate format="%Y%m%d%H%M%S"$></MTSetVarBlock>
<MTIf name="nextdate" gt="$thisdate">
<MTSetVar name="nextcount" op="++">
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$> »</a>
</MTIf>
</MTIf>
</MTEntries>
考え方はわりとシンプルです。まず該当記事の投稿日時と主カテゴリを取得しておきます。
「前のページ」リンクでは、該当記事の属するカテゴリ記事一覧から、該当記事より以前に書かれた記事のみに連番つけて、最初の記事(=該当記事の同じカテゴリ内の1つ前の記事)だけを表示します。
「次のページ」リンクも同様です。ここではsort_order="ascend"をつけて記事を昇順にします。該当記事より後に書かれた記事のみに連番をつけて、最初の記事(=該当記事の同じカテゴリ内の1つ次の記事)だけを表示します。
4.1、4.2のダイナミック・パブリッシングで動作確認済みです。
バリエーション:他にこんな方法もあります。
同一カテゴリー内での前後エントリーへのリンク(4) offset版
同一カテゴリー内での前後エントリーへのリンク(3)改 MT4.0~
<2008.7.10>バリエーションを追加。