MTのページ分割事情
エントリが増えるとページが長くなって見辛くなってきます。この対策として1ページ当たりのエントリ数を減らして「次の記事」「前の記事」のようにナビゲーションを出すのがページ分割です。MT4まではこの機能が標準では準備されておらず、ページ分割実現のためにはPageButeなどの外部プラグインを導入しなければなりませんでした。実質的にはPageButeがかなり普及しているようで、PageBute必須のテーマも配布されていたりします。動作も問題なく、予め指定したページ数分のリストが表示され、その範囲内の任意のページに一発で移動できるのも便利です。
以前ワタシも使っていたMT4.2からはページ分割に利用できるpager関連タグが準備されてようやくページ分割にも対応したのですが、PageButeなどの外部プラグインがが普及しているコト、またまだサンプルが少ないコトからあまり利用されていないようです。
MTのpager関連タグ
Rainierではpager関連タグが使われていますが、前述のPageButeなど一般的な外部プラグインが静的ページを出力するのに対し、MT標準のpager関連タグは検索機能を利用してページ分割を行っています。外部プラグインとは使い方が根本的に異なっていてタグが複雑かつ判りづらいために今ひとつ普及していないように思えるのですが、大きなメリットもあります。
静的ページを出力する場合、エントリ数に比例して分割されたインデックスページ数も増えます。ちなみにメインの鉄系ブログでは4,700のエントリを5エントリずつ出力していましたから、900以上のインデックスページが出力されるコトとなって出力フォルダはインデックスページだらけとなります。月別アーカイブペページ、カテゴリ別アーカイブページも同様の分割を行っていたので、この3倍以上の静的ページが作られるワケです。
一方でMT標準のpager関連タグでは出力されるインデックスページは1つだけで、2ページ目以降は条件指定した検索cgiのリンクとなります。アーカイブページでも同様ですからサーバー上のファイル数は約1/3となります。再構築の時間も多少は短くなりそうですし、サーバーの容量も多少抑えるコトが出来ます。MT標準の機能ですからバージョンアップしても使い続けられるだろうという安心感もあり、利用しない手はありません。
Rainierの構成
デフォルトのメインページ インデックステンプレートのページ分割部分は以下のようになっています。
<div id="index-main" class="main" role="main"> <mt:Entries limit="$entries_per_page" search_results="1"> <$mt:Include module="記事の概要"$> </mt:Entries> <$mt:Include module="ページネーション"$> </div>
45行目から抜粋しましたが、49行目だけがページ分割部分、といってもページネーション テンプレートモジュールでモジュール化しています。もう一つ重要なのは最初の9行
<$mt:Var name="entries_per_page" value="10"$> <mt:SetVarBlock name="search_link"> <$mt:CGIPath$><$mt:SearchScript$>?IncludeBlogs=<$mt:BlogID$> &template_id=<$mt:BuildTemplateID$> &limit=<$mt:Var name="entries_per_page"$> &archive_type=Index &page= </mt:SetVarBlock>
です。ココでmt-search.cgiに渡す検索条件を作っています。メインページやカテゴリ別記事リスト アーカイブテンプレートでは最初から検索機能が使われていますから意識する必要はありませんが、検索機能が使われていない月別記事リスト アーカイブテンプレートではコレを参考にカスタマイズするコトとなります。
慣れないhtmlタグを書くのに疲れたので今日はココまでにしておきます。
コメントする