MovableTypeのカテゴリページなのですが、[ブログの設定] で設定した表示件数または、日数分しか表示しないので、古い記事が表示されません。例えばG-Watcherの記事は467件あるのに、10件しか表示されなかったりする。とはいえ、全件表示したら、ページが長くなりすぎます。
そんなわけで、Alden Bates' Weblog: Paged Archives Plugin を使って、ページ分割をしました。まずこのプラグインをインストールします。
PA 1.4 .zip version for Windowsy systems.となっているところからダウンロードし、できたフォルダを PagedArchives に変更。FTPでそのフォルダを plugins にアップロードしました。
次はテンプレートの変更。標準ではテンプレードの「ブログ記事リスト」はこうなっています。
<mt:SetVarBlock name="page_title"><$mt:ArchiveTitle$>アー カイブ</mt:SetVarBlock>
<mt:SetVarBlock name="title"><$mt:BlogName encode_html="1"$>: <$mt:Var name="page_title"$></mt:SetVarBlock>
<mt:Unless name="datebased_archive"><$mt:Var name="limit" value="auto"$></mt:Unless>
<mt:If name="datebased_archive">
<mt:SetVarBlock name="html_head">
<mt:ArchivePrevious><link rel="prev" href="<$mt:ArchiveLink$>" title="<$mt:ArchiveTitle encode_html="1"$>" /></mt:ArchivePrevious>
<mt:ArchiveNext><link rel="next" href="<$mt:ArchiveLink$>" title="<$mt:ArchiveTitle encode_html="1"$>" /></mt:ArchiveNext>
</mt:SetVarBlock>
</mt:If>
<mt:SetVarBlock name="body_class">mt-archive-listing mt-<$mt:Var name="archive_class"$></mt:SetVarBlock>
<$mt:Var name="page_layout" value="layout-wt"$>
<$mt:Include module="ヘッダー" body_class="$body_class"$>
<h1 id="page-title" class="archive-title">
<mt:Unless name="datebased_archive">
<mt:IfArchiveType archive_type="Category">
<em><$mt:ArchiveTitle$></em>の最近のブログ記事
</mt:IfArchiveType>
<mt:IfArchiveType archive_type="Author">
<em><$mt:ArchiveTitle$></em>の最近のブログ記事
</mt:IfArchiveType>
<mt:Else>
<$mt:Var name="page_title"$>
</mt:Unless>
</h1>
<mt:Entries limit="$limit">
<$mt:Include module="ブログ記事の概要"$>
</mt:Entries>
<div class="content-nav">
<mt:ArchivePrevious>
<a href="<$mt:ArchiveLink$>">« <$mt:ArchiveTitle$></a> |
</mt:ArchivePrevious>
<a href="<$mt:Link template="main_index"$>">メインページ</a> |
<a href="<$mt:Link template="archive_index"$>">アーカイブ</a>
<mt:ArchiveNext>
| <a href="<$mt:ArchiveLink$>"><$mt:ArchiveTitle$> »</a>
</mt:ArchiveNext>
</div>
<$mt:Include module="フッター"$>
まず<$mt:Var name="limit" value="auto"$>で、$limitというのはautoだよ、と決めています。そして<mt:Entries limit="$limit">で、Entriesのlimitは$limit、つまりEntriesのlimitはautoだとしてます。
limit="N"
lastn モディファイアがブログ記事の作成日順に指定件数表示するのに対し、limit モディファイアは、指定された条件でフィルタリングした結果を指定数を最大件数として表示します。
値に auto を指定した場合、[ブログの設定] で設定した表示件数または、日数分で出力します。
autoだと[ブログの設定] で設定した表示件数または、日数分になります。これに0を指定して、全件表示されるようにします。
次にページ分割です。
<mt:Entries limit="$limit"><MTPAEntry>
<$mt:Include module="ブログ記事の概要"$>
</mt:Entries><MTPAEnd>
というように<mt:Entries>の後ろに<MTPAEntry>、</mt:Entries>の後ろに<MTPAEnd>を追加するとPagedArchivesプラグインがページを分割してくれます。
分割したページに移動するナビゲーションは以下を記事の上下に追加しました。
<MTPAIfMultiplePages>
<div style="text-align: center">
<MTPAPreviousPage show="1">
<MTPAPageList>
<MTPANextPage show="1">
</div>
</MTPAIfMultiplePages>
今のが何ページ目か分かるようにタイトルにページ数を付けました。
<h1 id="page-title" class="archive-title">
<mt:Unless name="datebased_archive">
<mt:IfArchiveType archive_type="Category">
<em><$mt:ArchiveTitle$></em>のブログ記事 <MTPAPageNum> / <MTPAPageCount>
</mt:IfArchiveType>
<mt:IfArchiveType archive_type="Author">
<em><$mt:ArchiveTitle$></em>のブログ記事<MTPAPageNum> / <MTPAPageCount>
</mt:IfArchiveType>
<mt:Else>
<$mt:Var name="page_title"$>
</mt:Unless>
</h1>
変更後は以下になりました。これをそのまま使ってもいけます。あと、本文とサイドバーを大、小に変えてます。それはまた別に説明できればいいかと思ってます。
<mt:SetVarBlock name="page_title"><$mt:ArchiveTitle$>アー カイブ</mt:SetVarBlock>
<mt:SetVarBlock name="title"><$mt:BlogName encode_html="1"$>: <$mt:Var name="page_title"$></mt:SetVarBlock>
<mt:Unless name="datebased_archive"><$mt:Var name="limit" value="0"$></mt:Unless>
<mt:If name="datebased_archive">
<mt:SetVarBlock name="html_head">
<mt:ArchivePrevious><link rel="prev" href="<$mt:ArchiveLink$>" title="<$mt:ArchiveTitle encode_html="1"$>" /></mt:ArchivePrevious>
<mt:ArchiveNext><link rel="next" href="<$mt:ArchiveLink$>" title="<$mt:ArchiveTitle encode_html="1"$>" /></mt:ArchiveNext>
</mt:SetVarBlock>
</mt:If>
<mt:SetVarBlock name="body_class">mt-archive-listing mt-<$mt:Var name="archive_class"$></mt:SetVarBlock>
<$mt:Var name="page_layout" value="layout-wt"$>
<$mt:Include module="ヘッダー" body_class="$body_class"$>
<h1 id="page-title" class="archive-title">
<mt:Unless name="datebased_archive">
<mt:IfArchiveType archive_type="Category">
<em><$mt:ArchiveTitle$></em>のブログ記事 <MTPAPageNum> / <MTPAPageCount>
</mt:IfArchiveType>
<mt:IfArchiveType archive_type="Author">
<em><$mt:ArchiveTitle$></em>のブログ記事 <MTPAPageNum> / <MTPAPageCount>
</mt:IfArchiveType>
<mt:Else>
<$mt:Var name="page_title"$>
</mt:Unless>
</h1>
<MTPAIfMultiplePages>
<div style="text-align: center">
<MTPAPreviousPage show="1">
<MTPAPageList>
<MTPANextPage show="1">
</div>
</MTPAIfMultiplePages>
<mt:Entries limit="$limit"><MTPAEntry>
<$mt:Include module="ブログ記事の概要"$>
</mt:Entries><MTPAEnd>
<MTPAIfMultiplePages>
<div style="text-align: center">
<MTPAPreviousPage show="1">
<MTPAPageList>
<MTPANextPage show="1">
</div>
</MTPAIfMultiplePages>
<div class="content-nav">
<mt:ArchivePrevious>
<a href="<$mt:ArchiveLink$>">« <$mt:ArchiveTitle$></a> |
</mt:ArchivePrevious>
<a href="<$mt:Link template="main_index"$>">メインページ</a> |
<a href="<$mt:Link template="archive_index"$>">アーカイブ</a>
<mt:ArchiveNext>
| <a href="<$mt:ArchiveLink$>"><$mt:ArchiveTitle$> »</a>
</mt:ArchiveNext>
</div>
<$mt:Include module="フッター"$>
あとはプラグインの設定で、1ページの表示する記事の件数を決めます。システムのプラグインでも、Blogごとのプラグインでも、どちらでもいいです。

Entries per pageを設定します。10にしました。
あとは再構築すれば、カテゴリがページ分割されるはずです。
松浦彰夫 拝












コメントする