2008年 09月 12日(金曜日) 14時 43分

ダイナミック・パブリッシングでのページ分割

 ダイナミック・パブリッシングでのページ分割がMT4.2より搭載されたので、公式サイトに則ってカスタマイズしました。これによって「旧MSF-NET・2001年度」の日記が表示されなくなっていた不具合を回避しています。
 エントリー数が多いページは分割タグが長くなってしまうので、WingMemoさんの「ダイナミック・パブリッシングで頁分割(8) MT4.2公式編」のサンプル7を少し自分のサイトに合うようにアレンジして利用させていただきました。改良後の記述を載せておきます。

<MTIfArchiveType archive_type="Category">
<!-- 頁分割ここから -->
<MTSetVarBlock name="pageno"><$MTCurrentPage$></MTSetVarBlock>
<MTPagerBlock>
<MTIf name"__last__"><MTSetVarBlock name="last"><MTVar name="__value__"></MTSetVarBlock></MTIf>
</MTPagerBlock>
<MTSetVarBlock name="last2"><MTGetVar name="last" value="5" op="-"></MTSetVarBlock>

<MTIf name="pageno" ge="5">
<MTIf name="pageno" le="$last2">
<MTSetVarBlock name="from"><MTVar name="pageno" value="4" op="-"></MTSetVarBlock>
<MTSetVarBlock name="to"><MTVar name="pageno" value="4" op="+"></MTSetVarBlock>
<MTElse>
<MTSetVarBlock name="from"><MTGetVar name="last" value="8" op="-"></MTSetVarBlock>
<MTSetVar name="to" value="$last">
</MTIf>
<MTElse>
<MTSetVar name="from" value="1"><MTSetVar name="to" value="9">
</MTIf>

<MTIf name="last" eq="1"><MTElse>

<div class="categorypaginate">
<MTPagerBlock>
<MTIf name="to" gt="9">
<MTIf name"__first__"><a href="<MTPagerLink>">« First </a></MTIf>
</MTIf>

<MTIf name="__value__" ge="$from"><MTIf name="__value__" le="$to">
| <MTIfCurrentPage><MTVar name="__value__"><MTElse><a href="<MTPagerLink>"><MTVar name="__value__"></a></MTIfCurrentPage>
</MTIf></MTIf>

<MTIf name="to" lt="$last">
<MTIf name"__last__">| <a href="<MTPagerLink>">Last »</a></MTIf>
</MTIf>
</MTPagerBlock>

<MTIf name="last" lt="10">| </MTIf>
</div>
</MTIf>

<!-- 頁分割ここまで -->
</MTIfArchiveType>

 1行目と最終行はカテゴリーアーカイブの場合の分岐です。
 ページ分割を表示するMTPagerBlockタグの前に分岐でLast値が1ならばページ分割を表示しないように追記しました。これは1ページ以内に記事が納まる場合(limitの値)に、ページ分割を表示させないようにする為です。
 <div class="categorypaginate">でclass属性を付けてページ分割を表示に使うスタイルシートを反映させています。それぞれに合わせてスタイルシートを変更して下さい。
 サンプルでは次項、前項のリンクが入ってるのですが、あまり必要ない気がしましたので、FirstとLastでアーカイブの1ページ目と最終ページへ飛ぶように変更しました。
 MTPagerBlockタグ内と、その最後にある <MTIf name="last" lt="10"> で、「|」線を両端に付け加えるように追加しました。これはメインページで使っているMTPagenateと見た目を統一するために付け加えたものです。

→ MovableType公式 「ダイナミックパブリッシングでのページ分割

 また、WingMemoのTAEKOさんには大変お世話になりました。
WingMemo

トラックバックURL

このエントリーのトラックバックURL:

コメントする

太字 イタリック アンダーライン ハイパーリンク 引用