Movable Type 備忘録
同一カテゴリ内の前・次リンク表示
- Prev Page: 特定の親カテゴリに属するエントリのみ一覧表示
- Next Page: 検索結果ページのページ分割をカスタマイズ
こんばんわ^^
以前、こちらのハッシュ変数を使って同一カテゴリ内の前・次リンク表示で、同一カテゴリ内の前・次リンクの表示についてご紹介しました。
デメリットとしては前後のリンクを表示するのに 2 回ループする必要があったため再構築に時間がかかってしまいます。
今回は配列を使って該当するエントリを見つけたら、その前後のインデックスから前・次リンクを表示するよう改良してみましたのでご紹介 (●>∀<●)/
カスタマイズ
たとえば、Tips( 小技 )カテゴリ内の特定の親カテゴリに属するエントリのみ一覧表示の前後のエントリページのリンクを以下に表示してみます。
- Prev Page: プライベートタグ一覧表示
- Next Page: 同一カテゴリ内の前・次リンク表示
上記は以下のようなタグをブログ記事アーカイブ、または MTEntries ブロックタグ内で使用することで前・次リンクを表示することができます。
同一カテゴリ内の前・次リンク
<mt:IfNonEmpty tag="EntryCategory"><$MTEntryCategory setvar="entcat"$><$MTEntryDate format="%Y%m%d%H%M%S" setvar="curdate"$><$mt:SetVar name="entall" value="0"$><MTEntries category="$entcat"><mt:SetVarBlock name="entdate[$entall]"><$MTEntryDate format="%Y%m%d%H%M%S"$></mt:SetVarBlock><mt:SetVarBlock name="entname[$entall]"><$MTEntryTitle$></mt:SetVarBlock><mt:SetVarBlock name="entlink[$entall]"><$MTEntryPermalink$></mt:SetVarBlock><$mt:SetVar name="entall" value="1" op="+"$></MTEntries><ul><mt:For var="x" from="0" to="$entall" increment="1"><mt:If name="entdate[$x]" eq="$curdate"><mt:SetVarBlock name="idx"><$mt:GetVar name="x" value="1" op="+"$></mt:SetVarBlock><mt:If name="idx" lt="$entall"><li class="list_entry">Prev Page: <a href="<mt:GetVar name="entlink[$idx]">" title="前のエントリ"><mt:GetVar name="entname[$idx]"></a></li></mt:If><mt:SetVarBlock name="idx"><$mt:GetVar name="x" value="1" op="-"$></mt:SetVarBlock><mt:If name="idx" ge="0"><li class="list_entry">Next Page: <a href="<mt:GetVar name="entlink[$idx]">" title="次のエントリ"><mt:GetVar name="entname[$idx]"></a></li></mt:If><mt:SetVar name="x" value="$entall"></mt:If></mt:For></ul><mt:Else><ul><MTEntryPrevious><li class="list_entry">Prev Page: <a href="<$MTEntryPermalink$>" title="前のエントリ"><$MTEntryTitle encode_html="1"$></a></li></MTEntryPrevious><MTEntryNext><li class="list_entry">Next Page: <a href="<$MTEntryPermalink$>" title="次のエントリ"><$MTEntryTitle encode_html="1"$></a></li></MTEntryNext></ul></mt:IfNonEmpty>
まず青字の部分では、該当エントリのプライマリカテゴリ、投稿日を取得して、取得したプライマリカテゴリでフィルタしたエントリの、投稿日、エントリ名、エントリの URL の配列を作ってます。
そして、赤字の部分で投稿日の配列を順次チェックして、同一日付=該当エントリの日付だった場合、その前後のインデックスを前リンク、次リンクとして表示してます。
緑字の部分はエントリが特定のカテゴリに属さない場合、通常の投稿順による前・次リンクを表示させています。
以上です。よかったら使ってみてください (●´∀`●)
Trackback Pings(0)
No trackbacks found.




質問があります。
<mt:Else>で、カテゴライズされていない記事に対する部分ですが、これって<ul>と</ul>は忘れているのでしょうか? それとも実際にこれで<ul>の中に入るのでしょうか? とても初心者の質問ですみません。参考にさせてもらい、勉強になります。
>>1 ぴぴ さん
こんにちわ^^
あちゃ

忘れてますね
ご指摘ありがとございます
bzbellさん、お早うございます。
同一カテゴリーの前後リンク。プラグインでやろうか?どうか迷っていた所、
この記事を拝見させていただいて、早速使わせていただきました~。
プラグインはプラグインのメリットはあるのでしょうが、テンプレートへの
記述だけで実現できるなんて凄いですね。
他のブラグインと合わせて、特定のカテゴリでのみ、「前後リンク」を
表示するように出来ました。有難うございます。
連続コメント失礼します。
さきほどのコメント。同文をIE7から投稿すると、
----------------------------------------------------
Your comment submission failed for the following reasons:
入力された文字列が正しくありません。
----------------------------------------------------
と表示されました。現在はfirefox Portableから投稿しています。
念のためご報告でした。
>>3 @Ran さん
>>4 @Ran さん
こんばんわ^^
できることならプラグインに依存せずやり過ごしたいですよね
ウチでもプラグインは必要最小限にとどめてます。
IE7 エラーの件ですがご連絡ありがとうございます。
IE8 では問題なさそうですね。