Webやアプリのデザイントレンドを紹介。たまに雑談。

Browse By

[MT] ダイナミック・パブリッシングでページ分割 – MovableType4

  • Pocket
  • このエントリーをはてなブックマークに追加

この前ネタ系サイトの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">&laquo;</a>
<a href="?offset={{$smarty.request.offset-$epp}}">&lt;</a>
{{else}}
&laquo; &lt;
{{/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}}">&gt;</a>
<a href="?offset={{math equation="floor((x-1)/y)*y" x=$count y=$epp}}">&raquo;</a>
{{else}}
&gt; &raquo;
{{/if}}

{{/if}}
<!– 頁分割ここまで –>

メインページのページ分割をする際に重要な部分は赤文字のトコ。ちなみにここを変更するとカテゴリーアーカイブや月別アーカイブ等も分割できるそうです。自分の場合はやってないので、そのあたりの説明は割愛。

ちなみにこの機能は、あくまでもMT4でダイナミック・パブリッシングが有効になっている時のものです。「ブログの設定>公開>全てのテンプレートをダイナミックに構築する」になってればイケます(テンプレートごとに、でもオッケーなハズ)。自分の場合元々がエキサイトブログからMTに乗り換えたタイプなので、ページ分割は前からやりたくて、やっとできたという感じ。といってもmBlogでは今んとこダイナミック・パブリッシングに切り替える予定はありません。なんか重くなりそうで。

3 thoughts on “[MT] ダイナミック・パブリッシングでページ分割 – MovableType4”

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください