MT > PageButeプラグインの改良

「MT/PageButeプラグインの改良」の編集履歴(バックアップ)一覧に戻る

MT/PageButeプラグインの改良 - (2013/03/07 (木) 15:44:24) のソース

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

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

 スカイアーク社さんのPageButeプラグイン
http://www.skyarc.co.jp/engineerblog/entry/2642.html
http://www.skyarc.co.jp/engineerblog/entry/pagebute356.html

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

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

差分ファイルの使い方は、オリジナルの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