top

同一カテゴリー内での前後エントリーへのリンク(4) offset版

何回、同じようなエントリを書いてるんだと言われそうですが…(^^;。投稿日時で比較するのではなく、別の方法でも実装できることに気が付いたので、それも覚え書き。前後リンク部分の見通しがよくなったので、使いやすそうかなと。

■ 基本編 4.2~(ダイナミック時)
__counter__変数を使っているので4.2以上向けです。
(*静的生成なら4.1から使えます。)

<MTSetVarBlock name="thisid"><$MTEntryID$></MTSetVarBlock>
<MTSetVarBlock name="ecat"><$MTEntryCategory$></MTSetVarBlock>

<MTEntries category="$ecat">
<MTSetVarBlock name="eid"><$MTEntryID$></MTSetVarBlock>
<MTIf name="eid" eq="$thisid">
<MTSetVarBlock name="prev"><$MTVar name="__counter__"$></MTSetVarBlock>
<MTSetVarBlock name="next"><$MTVar name="__counter__" value="2" op="-"$></MTSetVarBlock>
</MTIf>
</MTEntries>


<MTEntries category="$ecat" lastn="1" offset="$prev">
<a href="<$MTEntryPermalink$>">&laquo; <$MTEntryTitle$></a>
</MTEntries>
|
<MTIf name="next" ge="0">
<MTEntries category="$ecat" lastn="1" offset="$next">
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$> &raquo;</a>
</MTEntries>
</MTIf>

単純に<MTEntries lastn="1" offset="5">などで実装できないの?と考えまして…。
まず該当記事が同じカテゴリ内で何番目に位置しているかを求めます。「前のリンク」ならその数字がそのままoffsetで除外する数字になります。「次のリンク」なら2を引けばそれがoffsetで除外する数字になります。
これならループも記事番号を求めるときに1回まわるだけで済むので動きもシンプルだし、考え方としても分かりやすいのではと。

■ 応用編 4.1~
青字の部分を以下に差し替えれば4.1のダイナミックでもoffsetで前後リンクを出すことが出来ます。

<MTSetvar name="pncount" value="0">
<MTEntries category="$ecat">
<MTSetVarBlock name="eid"><$MTEntryID$></MTSetVarBlock>
<MTSetVar name="pncount" op="++">
<MTIf name="eid" eq="$thisid">
<MTSetVarBlock name="prev"><$MTGetVar name="pncount"$></MTSetVarBlock>
<MTSetVarBlock name="next"><$MTGetVar name="pncount" value="2" op="-"$></MTSetVarBlock>
</MTIf>
</MTEntries>

バリエーション:他にこんな方法もあります。
同一カテゴリー内での前後エントリーへのリンク(3)改 MT4.0~
同一カテゴリー内での前後エントリーへのリンク(2) MT4.1~

 

トラックバックURL

トラックバックされる際にはこの記事へのリンクをお願い致します

コメントを投稿

 


 <注意>
 ご利用のブラウザ、設定ではコメントのプレビューおよび投稿はご利用になれません。
 コメント投稿の際はお手数ですがjavascriptをオンにして下さい。
 *javascriptオフのまま投稿ボタンを押すと送信内容が消えますのでご注意下さい。