MT > PageButeプラグインの改良

トップページ > MT > PageButeプラグインの改良

 静的ページネートが出来るスカイアーク社さんのPageButeプラグインを少し改良して、ページ内の最初のエントリーと最後のエントリーのカウント数(エントリー全体で何番目か)を表示できるようにしてみます。


は、手軽にページネートを作成することが出来るで非常に重宝しています。便利です。
 しかしながら、、、ページ内で「○件目~○件目までを表示しています」みたいなことをしようとすると、どうも難しいようです。

 いろいろと試してみたのですが、MTPageCountやMTPageMaxCountといった機能タグで、ページ番号は取得出来るのですが、これを使ってナイーブに現在のページの最初のエントリーのカウントを出そうとしてもうまくいきません。PageButeプラグインのソースコードを見てみると、MTPageCountやMTPageMaxCountというタグはコメント文を出力しているだけで、その後、ページファイルを書き出す段階に置き換えをしているので、MTタグが実行されている段階では数値を計算出来ないためです。
 それでも、頑張ればMTタグだけでも出来るのかもしれないのですが、自分は挑戦してみたもののどうもダメだったため、PageButeプラグイン自体に同機能を追加してみました。差分ファイル
(著作権の問題があるため、ここでは差分ファイルのみの紹介になります)

差分ファイルの使い方は、オリジナルのPageBute.pl (バージョン 3.5.6)と同じディレクトリにおいて
patch PageBute.pl < pagebute.patch
です。

上記の修正を行うと、以下の二つのタグが使えるようになります。
MTPageFirstEntryCount
MTPageLastEntryCount

それぞれ、そのページ内の最初のエントリーのカウント、最後のエントリーのカウントになります。
例えば、記事が24件あって、5件ずつ表示している場合
ページ 最初のエントリーカウント 最後のエントリーカウント
1ページ目 1 5
2ページ目 6 10
3ページ目 11 15
4ページ目 16 20
5ページ目 21 24
のようになります。
(5ページの最後のエントリーカウントが25にならないのは、記事が全部で24件しかないためです)


MTタグで記述すると、次のようなサンプルを作ることが出来ます。
<MTPageContents count="5">
    <MTEntries lastn="999">
        <MTPageContentsHeader>
全エントリー数:<$mt:entriesCount$> <br />
現在のページ番号:[<$mt:pageCount$>]<br />
最大のページ番号:<$mt:pageMaxCount$> <br />
<$mt:pageFirstEntryCount$>件目~<$mt:pageLastEntryCount$>件目 <br />
            <dl></MTPageContentsHeader>
            <dt>タイトル:<$MTEntryTitle$></dt>
            <dd>概要:<$MTEntryExcerpt$></dd>
        <MTPageContentsFooter></dl></MTPageContentsFooter>
        <$MTPageSeparator$>
    </MTEntries>
</MTPageContents>
</mt:setVarBlock>

2013/3/7
最終更新:2013年03月07日 15:44
添付ファイル