top

ダイナミック・パブリッシングで頁分割(2) 静的&動的MIX技

ダイナミックで頁分割できることが分かったので、さっそくメインサイト用ブログに取り入れてみることにしました。今回導入したのはトップ頁の頁分割。アーカイブ頁の分割もいいけど、意外に実用的で需要があるのはトップ頁なんじゃないかと思います。

ところでダイナミックでもトップ頁は静的生成という人も多いのではないでしょうか。トップは一番アクセスが多いところなので、できれば静的生成にしておきたいところ。トップは静的生成のまま、分割頁だけをダイナミックにする、そんなことが出来るのか?

やってみました(^^;。以下、覚え書きです。

1.ダイナミック用のテンプレートを作成
「テンプレートを新規作成」でインデックスページの中身を丸ごとコピペしてindex2.htmlという名前で保存します。あらかじめ設定で「テンプレート別に、スタティックHTMLもしくはダイナミック・パブリッシングを選択」を選んでおき、「このテンプレートをダイナミック・ページにする」にチェックを入れます。

2.ページ分割の導入
こちらの手順に従って、index2.htmlにページ分割を設定。ここでは頁分割部分を以下のようなコードにしてみました(<MTEntries>の設定を忘れないように)。

<div class="○○">
Log 
<!-- 頁分割ここから -->
{{capture assign="count"}}50{{/capture}} {{if $count > $epp}} 
| 
 
{{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}}
<!-- 頁分割ここまで -->
<a href="<$MTBlogURL$>archives.html">全ログ一覧 ≫</a>
</div>

赤字で設定した数のエントリーが分割して表示されます。○○の部分は好きなクラス名をつけて好みで装飾するとよいかと。全ログ一覧はアーカイブページへのリンクになっています。

3.静的トップ頁に動的頁へのリンクを追加する
ここでは最新50件のエントリーを1頁に5件ずつ表示したものとして説明します。index.htmlに以下のソースをindex2.htmlに設置したのと同じ場所に追加。<MTEntries>に lastn="5"を追加しておくのを忘れないように。

|
1
|
<a href="index2.html?offset=5">2</a>
|
<a href="index2.html?offset=10">3</a>
|
<a href="index2.html?offset=15">4</a>
|
<a href="index2.html?offset=20">5</a>
|
<a href="index2.html?offset=25">6</a>
|
<a href="index2.html?offset=30">7</a>
|
<a href="index2.html?offset=35">8</a>
|
<a href="index2.html?offset=40">9</a>
|
<a href="index2.html?offset=45">10</a>
|

これでindex.htmlは静的生成のまま、分割される頁はダイナミックで表示できるようになります。