先日、Perl版ダイナミック・パブリッシング用のページ分割プラグインを紹介しました。
このプラグインをインストールすると、多数のテンプレートタグが追加されます。
今回は個々のタグの書き方を解説します。
MTDivPagesInitタグ
ページ分割を初期化します。このタグは、テンプレートの先頭に入れてください。
書き方は以下のようになります。
<$MTDivPagesInit per_page="n"$>
「per_page="n"」で、1ページあたりのエントリーの出力件数を指定します。
例えば、1ページあたり5件のエントリーを出力する場合は、「per_page="5"」とします。
なお、「per_page="n"」を省略すると、1ページあたり10件ずつエントリーを出力します。
MTEntriesDivPagesタグ
MTEntriesタグをページ分割用にしたもので、エントリーの一覧を出力するためのコンテナタグです。
書き方は以下のようになります。
<MTEntriesDivPages lastn="x" offset="y"> 各エントリーを出力するタグ等 </MTEntries>
「lastn="x"」で、出力するエントリーの件数を指定します。省略した場合は、MTDivPagesInitタグの「per_page」で指定した件数になります。
また、「offset="y"」を指定すると、ページの先頭からy件のエントリーを飛ばして、その次のエントリーから出力することができます。
MTDivPagesCountタグ
分割されたページ数を表す変数タグです。
例えば、エントリーが200件で、1ページあたり10件出力する場合、このタグの出力は20になります。
MTDivPagesIfMultiタグ
ページが分割されているかどうかを判断するための条件タグです。
ページが分割されていれば、<MTDivPagesIfMulti>と</MTDivPagesIfMulti>の間の部分が出力されます。
MTDivPagesEntryCountタグ
全エントリー数を出力する変数タグです。
MTDivPagesCurPageNumber
現在表示中のページ番号を出力する変数タグです。
先頭のページが1ページになります。
MTDivPagesCurPageFirstEntryNumber/MTDivPagesCurPageLastEntryNumberタグ
現在表示中のページでの、先頭/最後のエントリーの番号を出力する変数タグです。
例えば、1ページあたり10ずつ表示するようにした場合で、現在2ページ目が表示されている場合、MTDivPagesCurPageFirstEntryNumber/MTDivPagesCurPageLastEntryNumberタグのそれぞれの出力は、11と20になります。
「100件中11~20件目」のように表示する際に使います。
MTDivPagesLoopタグ
ページ番号の一覧を出力するコンテナタグです。
アトリビュートを何も指定しないか、もしくは「all="1"」のアトリビュートを指定すると、すべてのページ番号を出力します。
また、以下のアトリビュートを指定することで、一部のページ番号だけを出力することもできます。
| アトリビュート | 内容 |
|---|---|
| first="x" | 先頭からxページ分の番号を出力します |
| mid="y" | 現在表示中のページの前後yページ分の番号を出力します |
| last="z" | 最後からzページ分の番号を出力します |
| delimiter="○" | ページ番号が飛ぶ際に、その間に表示する文字を指定します |
| glue="○" | ページ番号とページ番号の間に表示する文字を指定します |
例えば、以下のようにタグを書くとします。
<MTDivPages first="3" mid="1" last="3" delimiter="-" glue=" | "> ページ番号等を出力するタグ </MTDivPages>
この場合で、ページが全部で20ページあって、現在10ページ目が表示されているすると、以下のようにページ番号が出力されます。
1 | 2 | 3 | - | 9 | 10 | 11 | - | 18 | 19 | 20
MTDivPagesNumberタグ
MTDivPagesLoopタグのコンテナの中で使い、個々のページ番号を出力するタグです。
ただし、MTDivPagesLoopタグで「delimiter="○"」のアトリビュートを指定している場合、ページ番号が飛ぶ箇所では、「○」で指定した文字が出力されます。
MTDivPagesLinkタグ
MTDivPagesLoopタグのコンテナの中で使い、個々のページへのURLを出力するタグです。
MTDivPagesLoopHeaderタグ
MTDivPagesLoopタグのコンテナの中で使い、コンテナの先頭のページ番号を出力しているかどうかを判断する条件タグです。
MTDivPagesLoopFooterタグ
MTDivPagesLoopタグのコンテナの中で使い、コンテナの最後のページ番号を出力しているかどうかを判断する条件タグです。
MTDivPagesIfCurPageタグ
MTDivPagesLoopタグのコンテナの中で使い、出力するページ番号が、現在表示中のページ番号と同じかどうかを判断するための条件タグです。
「現在のページ番号だけ色を変えて出力する」といった用途に使います。
MTDivPagesIfDelimiterタグ
MTDivPagesLoopタグのコンテナの中で使い、ページ番号が飛ぶ箇所かどうか(delimterアトリビュートで指定した文字を出力する箇所かどうか)を判断する条件タグです。
MTDivPagesFirstPageLinkタグ
先頭のページのURLを出力する変数タグです。
MTDivPagesLastPageLinkタグ
最後のページのURLを出力する変数タグです。
MTDivPagesNextPageLinkタグ
次のページのURLを出力する変数タグです。
MTDivPagesPrevPageLinkタグ
前のページのURLを出力する変数タグです。
MTDivPagesIfFirstPage
現在表示中のページが先頭のページかどうかを判断する条件タグです。
MTDivPagesIfLastPage
現在表示中のページが最後のページかどうかを判断する条件タグです。
MTDivPagesIfNextPage
現在表示中のページに、次のページがあるかどうかを判断する条件タグです。
MTDivPagesIfPrevPage
現在表示中のページに、前のページがあるかどうかを判断する条件タグです。
MTDivPagesCurPageLink
現在表示中のページのURLを出力する変数タグです。



![Hardcore Will Never Die, But You Will [Disc 2] Hardcore Will Never Die, But You Will [Disc 2]](http://userserve-ak.last.fm/serve/34s/71241534.jpg)
![Hardcore Will Never Die, But You Will [Bonus Tracks] Hardcore Will Never Die, But You Will [Bonus Tracks]](http://userserve-ak.last.fm/serve/34s/67192634.jpg)
![Hvarf-Heim (Hvarf) [Disc 1] Hvarf-Heim (Hvarf) [Disc 1]](http://userserve-ak.last.fm/serve/34s/37517227.jpg)




コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
MTPaginateみたいな表示にはできませんか?
現在表示しているページ番号だけリンクを外したいのです。
あと、ページ番号の間にセパレーターを入れることはできませんか?
少しタグの説明が不親切かと思います。
変数タグは$をつけるなどしたほうがいいのでは。。。
>弊社さん
こんにちは。
現在表示しているページ番号かどうかは、MTDivPagesIfCurPageタグで判断することができます。
また、ページ番号の間にセパレータを入れるには、MTDivPagesIfLastPageタグで最後のページかどうかを判断し、最後のページ以外ではセパレータの文字を出力するようにします。
MTDivPagesLoopと$MTDivPagesNumber$で各ページへのリンクをつくった場合、MTDivPagesIfCurPageで現在のページを判断しても、現在のページ番号の色を変えるとか、サイズを変えるとかは出来たんですが、リンクを外すことができません。
もしかしてタグの記述になにかあるのでしょうか。
<MTDivPagesLoop mid="5" delimiter="-">
<a href="<$MTDivPagesLink$>"><MTDivPagesIfCurPage><b><font size="+1"></MTDivPagesIfCurPage><$MTDivPagesNumber$><MTDivPagesIfCurPage></b></font></MTDivPagesIfCurPage></a>
</MTDivPagesLoop>
とした場合に、現在ページにまでリンクが貼られてしまうというものです。
>弊社さん
こんにちは。
以下のようにタグを組んで、現在のページならページ番号とb/fontタグを出力し、そうでないならリンクを出力するようにすれば良いです。
<MTDivPagesLoop mid="5" delimiter="-">
<MTDivPagesIfCurPage>
<b><font size="+1"><$MTDivPagesNumber$></font></b>
<MTElse>
<a href="<$MTDivPagesLink$>"><$MTDivPagesNumber$><MTDivPagesIfCurPage></a>
</MTElse>
</MTDivPagesIfCurPage>
</MTDivPagesLoop>
アドバイスありがとうございます。
無事できました。
perl版ダイナミック・パブリッシングはおかげさまでうまくいったのですが(キャッシュは失敗しました。。。)、
ページ分割プラグインがうまく動いてくれません。
Build Error
ご指定のアドレスのページは見つかりませんでした。
uri = /blog/index.php?page=2
というメッセージが出てしまいます。。。
MTDivPagesInitタグで表示件数は指定出来るので、プラグインは動作しているようです。
なにか心当たりがありましたらヒントでも構いませんので、教えて頂ければ助かります。
ちなみに、サーバーはロリポップです。
よろしくお願いいたします。
すみません。
ブログのURLを記述し忘れていました。
プラグインはメインページに使用しています。
>ノイ さん
こんにちは。プラグインご利用ありがとうございます。
そちらのBlogを拝見しましたが、エラーの原因はちょっと分からないです。申し訳ありません。
>壱さん
早速レスありがとうございます。
>そちらのBlogを拝見しましたが、エラーの原因はちょっと分からないです。申し訳ありません。
そうですか。。。
了解しました。ありがとうございます。
素人はあまり手を出さない方がよさそうですね。。。
もう少し勉強してからページ分割に再度挑戦したいと思います。
それまでは個別エントリーのみダイナミックパブリッシングを有効にしておきます。
ちなみに、今更なんですが、mt-dynamic.cgiを入れた上で動的にページが生成されていればperl版ダイナミックパブリッシングは実現出来ていると判断していいんでしょうか?
そこが少し気になっています。
それと、今後挑戦される方へのメモとして少しご報告を。
●mt-dynamic.phpの40行目あたりのpreg_match関数?で下記のエラーが出たので、
if (preg_match('/(.*)\?.*/', $uri, $matches))と
if (preg_match('/\/$/', $uri))の2行を
if (preg_match("{(.*)\?.*}", $uri, $matches))と
if (preg_match("{\/$}", $uri))
に変更させて頂いたところエラーがなくなりました。
エラー:
Warning: preg_match(): Unknown modifier '$' in
サイトパス/mt-dynamic.php on line 40
●ロリポップでsqlsub_mysql.phpからMySQLに接続出来ず以下のようなエラーが出てました。
これは解決していません。
(記述する設定に問題はありませんでした。)
エラー:
Warning: mysql_connect(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in
サイトのパス/sqlsub_mysql.php on line 7
SQLに接続することができませんでした。
以上です。
エントリーアーカイブのページ分割はできないのでしょうか?
PHP版のダイナミックパブリッシングで使える、タグをつかってページ分割したく考えているのですが。よろしくお願い致します。
↑ページ分割したいのは、エントリーアーカイブではなくて、「エントリーの内容」でした。すみません。よろしくお願い致します。
>へまさん
こんにちは。
このプラグインでは、申し訳ありませんが、エントリーアーカイブページの分割はできません。
ご回答いただき、ありがとうございました。
上記の説明からして、エントリー数の指定で分割が可能ですが
日付ごとの分割は可能にはならないでしょうか?
例えば
1ページごとに5日分のエントリーを表示する
といった感じです。
よろしくお願いします。
>スプリング・エフェメラルさん
こんにちは。
このプラグインでは、内部的には「~」タグの「offset="○○"」の部分を動的に変化させて、ページを分割しています。
日付単位で分割しようとすると、このような手法ではなく、複雑なロジックを組むことが必要になり、プラグインの作りを大きく変える必要があります。
perl版ダイナミック・パブリッシングとともに
こちらの分割プラグインを利用させていただきました。
perl版ダイナミック・パブリッシングはうまく動作しているのですが、
分割プラグインがうまく動作しません。
表示的にはきちんと分割されているようなのですが、
リンクをクリックしても1ページ目から飛ばないのです。
これは何かタグが足りないのでしょうか。
MTDivPagesInitタグをテンプレートの最初に入れるとありますが
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ~>の上に
表記すればいいんですよね。
リンク先を見るときちんと「?page=2」と言った風に表示されてはいます。
なぜリンク先に飛ばないのか・・・・・・ご教授いただければ嬉しいです。
>海月さん
こんにちは。プラグインご利用ありがとうございます。
ご質問の件ですが、申し訳ありませんが、そちらのサーバーにログインして調べてみないと、原因をつかめそうにありません。
このプラグインではコメントを分割することはできるのでしょうか。
>茶。さん
こんにちは。
このプラグインはMTEntriesタグの分割にのみ対応しています。
その他のものを分割することはできません。
壱さま
やはりそうですか。
ありがとうございました。
こんにちは。
こちらのプラグインを導入しページ分割はうまくいったのですが
「その1」に例文として掲載されている前後リンクをそのままコピペしたところ
うまく働きません。
ご教示いただければ幸いです。
サーバーには
/www/
┣ /mt/ ←mtのシステム部分が入っているフォルダ
┗ /site/
┗ /memo/←ページ分割したいブログ
という構成で置いており
/site/は site.com という感じで独自ドメイン、
/memo/は memo.site.com という感じでサブドメインで運用しています。
プルダウンでページを選ぶ部分は正しく
http://memo.hogehoge.com/index.html?page=n
と出力されるのですが
前後リンクや先頭・末尾ページへのリンクが
http://username.server.ne.jp/memo/index.html?page=n
となってしまい
/memo/は/site/の下にあるのでNot Foundになってしまいます。
こういった構成のとき前後リンクや先頭・末尾リンクを正しく出力するには
どのようにすればよろしいでしょうか。
お手数をおかけいたしますがよろしくお願いします。
すみません、「その1」でのコメント33~34にて自己解決いたしました。
ご迷惑をおかけいたしました。
こんばんは!
MTDivPagesLoopタグを使っていますが、
delimiterの部分はカレントページにリンクを指しています。いろいろ試していましたが、解除されませんでした。
よろしかったら、教えていただけませんでしょうか。
よろしくお願いいたします。
>zaneさん
こんにちは。
どのようにタグを組み合わせられたか分からないので何とも言えませんが、DivPagesIfDelimiterタグを使って、delimiterかどうかを判断して、リンクするかしないかを分けるようにすれば良いのではないかと思います。
いつも大変参考にさせいてただいております。
「再構築を不要にするカスタマイズ(ページキャッシュ機能追加)」でコメントさせていただいたものです。
さっそくこちらのプラグインも導入いたしまして、ページ分割はうまくいったのですが、実はカテゴリごとにページを表示したいと考えております。
現在はカテゴリに関係なく、すべてのエントリーを「<MTDivPagesLoop>」で持ってきているようなのですが、これを「<MTDivPagesLoop glue=" | " category="xxx">」といった形でカテゴリごとにページ分割することは可能でしょうか?
>MT初心者さん
こんにちは。
「<MTDivPagesLoop glue=" | " category="xxx">」のような書き方はできません。
カテゴリーごとにページを分けたいのであれば、カテゴリーアーカイブをページ分割してください。
管理人様
早速のご回答ありがとうございました。
アドバイスいただきましたとおり実装いたしまして、無事動作いたしました。
いまひとつMTのカテゴリアーカイブの使い方に慣れていなかったのですが、わざわざインデックステンプレートをカテゴリごとに設置する必要はないですよね。
MT5にてプラグイン使わせていただきました。
MTEntriesDivPagesタグですが、設定→投稿の公開の既定値:順番の値が反
映されないようですね
sort_orderモディファイア等も効かないようなので、
MTEntriesタグでは有効だったモディファイアが使えるような考慮されるとうれしいです。
>kaburkさん
こんにちは。
ご指摘の件は、今後の検討課題にしたいと思います。
初めてコメントします!
DivPagesプラグインをブログで有効にするとMTPaginate(こちらはエントリーページの分割で使用しています)プラグインと併用できなくて困っています。
MTPaginateで生成した「次のページ」をクリックすると「ページが見つかりません」となります。生成されたリンクはこのようになっていました: http://hoge.com/blog/post/mt-dynamic.php?page=2
どちらかのプラグインを少しいじれば併用可能な気がするのですが、アイデアありませんでしょうか?
>makimakiさん
こんにちは。
ご質問の件について記事にまとめました。
http://www.h-fj.com/blog/archives/2010/07/29-112745.php