トップページを分割して表示
レンタルブログとかだと、トップページが分割されているサイトを結構見かけます。
今回は、MTでそれをやってしまおう。という魂胆です。
以前、このカスタマイズ法を調べて欲しいと依頼を受けていたのですが、
なかなか時間が取れず、記事にするのがこんなに遅れてしまって申し訳ありません。
このカスタマイズは、小粋空間さんのトップページのページ分割を参考にしました。
トップページ以外のページを分割する方法は、
「ページを分割して表示する」に書いていますので、そちらを参考にしてください。
「ページを分割して表示する」と同じプラグインを使います。
すでにプラグインを手に入れている方は、プラグイン入手のくだりは読み飛ばしてください。
*php化していることが前提のプラグインです。
php化はこちら→MTをphp化するの記事を参考にしてください。
プラグインを配布しているサイトは
MT ExtensionsさんのエントリーMTPaginate 1.24
英語なのでしり込みしてしまいますが、上の方のDownloadをクリックしてダウンロードしてしまえば大丈夫です。
では、導入方法です。
1・MT ExtensionsさんのエントリーMTPaginate 1.24
へ行き、プラグインをダウンロードして解凍する
2・FTPソフトなどで MTPaginate.pl を pluginsフォルダへアップロードする
3・メインページのテンプレートを以下を参考に修正する
詳しいソースは小粋空間さんに詳しく書かれていますので、
ここでは私が改変したものをご紹介します。とはいっても少ししか変わっていません・・・。
<MTEntries>を探して、その直前に
<!-- ページ分割開始 -->
<MTPaginate>
<MTPaginateContent max_sections="5">
<!-- ページ分割終了 -->
<MTEntries>を
<MTEntries lastn="30">
</MTEntries>を探して、その直前に
<!-- ページ分割2開始 -->
<$MTPaginateSectionBreak$>
<!-- ページ分割2終了 -->
</MTEntries>の直後に
<!-- ページ分割3開始 -->
</MTPaginateContent>
<MTPaginateIfMultiplePages>
<MTPaginateIfPreviousPage_>
<a href="<$MTPaginatePreviousPageLink$>"><</a>
</MTPaginateIfPreviousPage_>
<$MTPaginateNavigator style="links" format_all="全部読む" place_all="after" separator="|">
<MTPaginateIfNextPage_>
<a href="<$MTPaginateNextPageLink$>">></a>
</MTPaginateIfNextPage_>
</MTPaginateIfMultiplePages>
</MTPaginate>
<!-- ページ分割3終了 -->
を入れます。
・赤文字の部分を変えるとリンク形式を変更する事ができます。
style="links" だと 1│2│3│4 という風に。
style="popup" だと、プルダウン形式になります。
・青文字の所を好きな文にする事ができます。
ここを押すと、分割されずにエントリーが表示されます。
・緑文字の所を変えると、青文字の部分の表示位置を変えることが出来ます。
place_all="before" だと 全部読む│1│2│3 という風に。
place_all="after" だと 1│2│3│全部を読む というようになります。
・ピンクの所で、ページを区切っている記号を変更できます。
separator="☆" とやると、 1☆2☆3☆4 という風になりますね(*'-')
・黄文字の所の数字は、分割した1ページに表示する記事数です。
max_sections="10" とすると、1ページに10記事表示されます。
・紫文字の所(<MTEntries>の数字)は、メインページとして扱う記事の総数です。
ここを30、黄文字の所を5とした場合、
トップページに5記事、計6ページまで表示されるというわけです。
・茶色文字の所は、前後のページへのリンクです。
このままですと、<と>になっています。←や→にしてもいいかもしれませんね。
といった所です。
ほとんど「ページを分割して表示する」と変わってないですが・・・。
参考になったならば幸いです。
このカスタマイズはどのバージョンでも使えます。
2007年2月12日更新。





アーカイブリストのページも分割できるようで、その場合は
<MTArchiveList archive_type="Monthly">
の前に
<!-- ページ分割~
の部分をおいて
<!-- ページ分割2~
を</MTArchiveList>の直前
<!-- ページ分割3 -->
を</MTArchiveList>の直後
に置くと良いようです
なぜか?page=1をつけないarchives.phpの1ページ目の場合
全件表示されてしまいますが…
コメント時刻: 2006年08月21日 18:29
>hinaさん
はい。トップページ以外も分割できます。
アーカイブページは「記事タイトル一覧に次の○件をつける方法」
http://mt.rambler-style.com/archives/2006/0413-1742.php
カテゴリーアーカイブ、日付アーカイブは「ページを分割して表示する方法」
http://mt.rambler-style.com/archives/2005/0512-1522.php
でご紹介していますので参考にしてください。
1ページ目にすべての記事が表示されてしまうのは、
<MTPaginateContent max_sections="5">
の、"5"の所が"50"など大きな数字になっていて
記事の数を上回っていませんでしょうか?
archive_type="Monthly"として、月ごとに表示するように
指定しているようですので、一ヶ月の記事数を下回る数字にしてください。
コメント時刻: 2006年08月22日 15:33
いつも参考にさせていただいております。
1ページごとに5日分のエントリーを表示という感じが出来ればなぁといろいろあら探ししているのですが・・・
Movable Typeを使ったHPでトップページには6日分のエントリーを表示し
それ以降のエントリーは”次へ”を押すとトップページから6日前の日別アーカイブが表示されるといった手法をとっているHPをみたんですがこの方法がどうしても思いつかないんです。
ソースを見る限りそれらしきjavascriptもみつからないのでMTタグで表現できるのかなとおもっているのですが何かご存じでしょうか?
コメント時刻: 2007年02月06日 01:18
≫CHOBIさん
できた*・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*!!!! カモ。
1日うんうん唸って考えました。多分できると思います。
MTタグだけです。
・<MTEntries>にdays="5"など入れて、何日分メインページに表示するか指定します。
<MTEntries days="5"> 数字は変えてくださいね。
・</MTEntries>の上に、
<MTEntriesFooter><MTEntryPrevious><a href="<$MTEntryPermalink archive_type="Daily"$>">次へ</a></MTEntryPrevious></MTEntriesFooter>
を入れます。「次へ」は好きな言葉にして大丈夫です。
MTEntryPreviousで”次のエントリー”と指定して、
MTEntryPermalink archive_type="Daily"で日別アーカイブへのリンク。
これだけだと全部の記事の下に「次へ」が出てしまうので、
MTEntriesFooterを入れて最後の記事のみ表示するようにしました。
これでどうでしょう[?] こんなのでよかったでしょうか。
コメント時刻: 2007年02月07日 10:42
どうもありがとうございます!
そうですこうゆうのです!
<MTEntryPermalink>の存在忘れてまた。
このタグは<MTEntries days>内でちゃんと効果あるんですね・・・って当たり前か。
最初<MTEntries days>で5日分表示させてoffsetで4指定すればスマートではないけど良いかなと思ったんですけどoffsetはlastnアトリビュートしか効果がないと知ってoffsetつかえねぇーって思ってたりもしてました。
りぃさんに聞いて良かったです!
りぃさんに聞いてなかったらperl言語に手を出していたところでした。
本当にどうもありがとうございました。
コメント時刻: 2007年02月08日 21:53
≫CHOBIさん
こんなに喜んでもらえるとは私も嬉しいです[テレ]
ご希望のものができてよかったです~。
コメント時刻: 2007年02月11日 11:59