[MT] ダイナミック・パブリッシングでページ分割 – MovableType4
この前ネタ系サイトのwait4sleepを作る際に、どうしてもやりたかったのがページ分割。いわゆる「次のページ、前のページ」みたいなアレ。けどMTはデフォルトがスタティック・パブリッシングだから今までやった事がなかったんです。なので最初はWordPressを使おうとも思ってたんだけど、色々調べてるとMTでページ分割を行う方法が見つかったので、んじゃまぁ使い慣れたツールで作ろうか、という流れでMT4を使う事にしました。ページ分割を行いたいというためだけに、今まで使った事のないダイナミック・パブリッシングの機能を初めてオンに。WPユーザーにとっては当たり前のことなんだろうけど、再構築なしで記事が公開でき、テンプレートも反映されるってのはなんだかスゴい。
で、ページ分割の機能を実装する際に参考にしたのがWingMemoさん。ここで紹介されてるスクリプトを元に、少しだけ内容を変更してwait4sleepで使ってます。自分の備忘録ついでに紹介。ちなみに以下の例は、メインページにページ分割のリンクを設置する場合です。
まずは<MTEntries>の部分を下記のように書き換えます。
{{assign var="epp" value=12}}
<MTEntries lastn="12" offset="`$smarty.request.offset`">
赤文字の数字は、メインページに表示したい記事の件数。この数字を基準にMTはページ分割を行います。2箇所ある数字は同じにしましょう。
次にページ分割のリンクを表示させたい場所に、下記のスクリプトを記述。
<!– 頁分割ここから –>
{{capture assign="count"}}<$MTBlogEntryCount$>{{/capture}}
{{if $count > $epp}}
{{if $smarty.request.offset > 0}}
<a href="?offset=0">«</a>
<a href="?offset={{$smarty.request.offset-$epp}}"><</a>
{{else}}
« <
{{/if}}
|{{math equation="(x-1)/y+1" x=$count y=$epp assign="numloop"}}
{{section name=npage loop=$numloop}}
{{if $smarty.request.offset+1 < ($smarty.section.npage.index+1)*$epp &&$smarty.request.offset+1 > $smarty.section.npage.index*$epp }}
{{$smarty.section.npage.index+1}}
{{else}}
<a href="?offset={{$smarty.section.npage.index*$epp}}">{{$smarty.section.npage.index+1}}</a>
{{/if}}{{if $smarty.section.npage.last != 1}} |
{{/if}}
{{/section}}
|
{{if $smarty.request.offset < $count-$epp}}
<a href="?offset={{$smarty.request.offset+$epp}}">></a>
<a href="?offset={{math equation="floor((x-1)/y)*y" x=$count y=$epp}}">»</a>
{{else}}
> »
{{/if}}{{/if}}
<!– 頁分割ここまで –>
メインページのページ分割をする際に重要な部分は赤文字のトコ。ちなみにここを変更するとカテゴリーアーカイブや月別アーカイブ等も分割できるそうです。自分の場合はやってないので、そのあたりの説明は割愛。
ちなみにこの機能は、あくまでもMT4でダイナミック・パブリッシングが有効になっている時のものです。「ブログの設定>公開>全てのテンプレートをダイナミックに構築する」になってればイケます(テンプレートごとに、でもオッケーなハズ)。自分の場合元々がエキサイトブログからMTに乗り換えたタイプなので、ページ分割は前からやりたくて、やっとできたという感じ。といってもmBlogでは今んとこダイナミック・パブリッシングに切り替える予定はありません。なんか重くなりそうで。
3 thoughts on “[MT] ダイナミック・パブリッシングでページ分割 – MovableType4”