今更ですがカテゴリ別アーカイブにページ分割機能追加

この記事は約4分で読めます。
記事内に広告が含まれています。

ダイナミックパブリッシングでページ分割 by you.

ダイナミックパブリッシングで運用しているこのムジログですが、凄くいまさらですが、カテゴリ別アーカイブのページにページ分割機能をつけました。
(つまり、それまでは過去ログを見る術が検索のみだったりする。検索エンジン的にもこのましくないので、つけてみた)


まず参考にしたのはダイナミック・パブリッシングで頁分割(8) MT4.2公式編です。
このページを読んでわかるようにMT4.2では公式にページ分割が出来るようになっています。MTの公式ページはダイナミックパブリッシングでのページ分割からご覧ください。

私の場合はブログ記事リストに修正を加えています。

WingMemo: ダイナミック・パブリッシングで頁分割(8) MT4.2公式編より引用:
カテゴリアーカイブでサブカテゴリ以下の記事も含めて分割 <br /> <MTEntries>を<MTEntriesWithSubCategories>に変更します。赤字の部分に1頁に表示させたい記事数を入れます。


<MTEntriesWithSubCategories limit="5" offset="auto">

そしてページナビゲーションをページの下部分に設置しました。私のソースは下記のとおりです。

<div style="font-size: 12px;" align="center">
<MTIfPreviousResults>
<a href="<MTPreviousLink>" rel="prev">&laquo; Previous</a>
</MTIfPreviousResults>
|
<MTPagerBlock>
<MTIfCurrentPage><MTVar name="__value__"><MTElse><a href="<MTPagerLink>"><MTVar name="__value__"></a></MTIfCurrentPage>
<MTUnless name="__last__"> | </MTUnless>
</MTPagerBlock>
|
<MTIfMoreResults>
<a href="<MTNextLink>" rel="next">Next &raquo;</a>
</MTIfMoreResults>
</div>

ここまで順調に行ったかと思えば、一点不具合がありました。
それは、「キャッシュ」を有効にしているので2ページ目以降をクリックしても1ページ目が表示されてしまいます。
原因は

Movable TypeでPHPダイナミックパブリッシングとキャッシュとページ分割を同時に利用する方法::レビログより引用:
さて、ここで困ってしまうのが、MTのキャッシュ機能をONにしていると、1ページ目がキャッシュされてしまうために2ページ以後は1ページ目が表示されてしまうという問題です。だからといって、キャッシュをOFFにしてしまうとRSSや他のページまでキャッシュされなくなってしまい動作が非常に重くなってしまいます

というわけです。そこでその対策として、

Movable TypeでPHPダイナミックパブリッシングとキャッシュとページ分割を同時に利用する方法::レビログより引用:
ダイナミックパブリッシングに使っているmtview.phpを修正します。 <br /> <br />  修正はごく簡単な物で、$_SERVER[‘REQUEST_URI’],を使ってURL中に?が含まれていなければ、キャッシュする。含まれていればキャッシュしない。という単純なロジックに変更します。

ということで私もmtview.phpを編集しました。

    $mt->caching = true;
    $mt->view();

    if(strpos($_SERVER[‘REQUEST_URI’],’?’)===false){
    $mt->caching = true;
    }
    $mt->view();

としました。
ページ分割でキャッシュを使っている方はご注意ください。

コメント

タイトルとURLをコピーしました