MT覚え書き:ページを分割表示

■このエントリーはMTを使っていた頃の覚え書きです■

カテゴリーページや、いくつか作ったインデックスページを分割させるためにいろいろ工夫してきたのですが、それをそろそろエントリーにまとめようと思い、昔書いた同じ内容のエントリーを見て驚き!ちょうど去年の今日。

ブログの意味もよくわかってない状況から今日まで、たくさんの方ご指導によりおかげさまで楽しく続けることができました。これからもよろしくお願い致します。。。
と、話が変わってしまいました。

というわけで、繰り返しネタですが、ちょっと発展したので一応。(※要PHP)

ARTIFACT −人工事実−」さんの”MovableTypeのページ分割/Permalinkの変更 ”と、
小粋空間」さんの”カテゴリーアーカイブと月別アーカイブのページ分割”と、
cocoons.org*」さんの”TOPページでもページ分け”を参考にさせていただきました。

プラグインページ配布&解説は、「MT Extensions: MTPaginate」です。(英語)
まずは「MT Extensions: MTPaginate」からプラグインのダウンロード。
解凍してできたファイルをMTディレクトリの「plugins」ディレクトリ内にアップ。

まず、アーカイブの設定

「BLOGの設定」⇒「Archive の設定」でCategoryという列の、「Archive ファイルの Template」というフォームに下記を入力。(あ、この頃はまだ英語だったんだ)

日本語では、
「ウェブログの設定」メニューから、ページ右上のメニュー「アーカイブの設定」をクリック。
「アーカイブ」の中の、「カテゴリー別」の「カテゴリー・アーカイブ」の右のフォームに、

cat_<$MTArchiveCategory dirify="1"$>.php

を入力。(ウチは頭に付いてる”cat_”を抜いちゃったんですがそれでも大丈夫かなぁ。。。)

次に、タグの修正追加

カテゴリーアーカイブテンプレートの分割させたい部分の一番上、

<MTEntries>

の上あたりに、

<MTPaginate>
<MTPaginateContent max_sections="10">

を追加。
”10”を変更することで、1ページ内に表示されるエントリーの数を変更できます。

<MTPaginate>
<MTPaginateContent max_sections="10">
<MTEntries>

こんな感じ。

次に、エントリー表示部分の終わりにある、

</MTEntries>

の部分を、

<$MTPaginateSectionBreak>
</MTEntries>
</MTPaginateContent>

のように前後に追加。
次に、分割したページにリンクするページ番号を表示させたい場所に、

<MTPaginateIfMultiplePages>

<MTPaginateIfMiddlePage_>
<a href="<$MTPaginatePreviousPageLink$>">previous&nbsp;&lt;&lt;</a>
</MTPaginateIfMiddlePage_>
<MTPaginateIfLastPage_>
<a href="<$MTPaginatePreviousPageLink$>">previous&nbsp;&lt;&lt;</a>
</MTPaginateIfLastPage_>
<$MTPaginateNavigator format_all="All Pages" placement_all="after">
<MTPaginateIfFirstPage_>
<a href="<$MTPaginateNextPageLink$>">&gt;&gt;&nbsp;next</a>
</MTPaginateIfFirstPage_>
<MTPaginateIfMiddlePage_>
<a href="<$MTPaginateNextPageLink$>">&gt;&gt;&nbsp;next</a>
</MTPaginateIfMiddlePage_>
</MTPaginateIfMultiplePages>

を追加。で、ページの下部に、

</MTPaginate>

を追加して完了。

例えば、ページ下部に、この分割ページリンクを表示させたい場合は、
</MTEntries>の下に何も無い場合。

<$MTPaginateSectionBreak>
</MTEntries>
</MTPaginateContent>

<MTPaginateIfMultiplePages>
<MTPaginateIfMiddlePage_>
<a href="<$MTPaginatePreviousPageLink$>">previous&nbsp;&lt;&lt;</a>
</MTPaginateIfMiddlePage_>
<MTPaginateIfLastPage_>
<a href="<$MTPaginatePreviousPageLink$>">previous&nbsp;&lt;&lt;</a>
</MTPaginateIfLastPage_>
<$MTPaginateNavigator format_all="All Pages" placement_all="after">
<MTPaginateIfFirstPage_>
<a href="<$MTPaginateNextPageLink$>">&gt;&gt;&nbsp;next</a>
</MTPaginateIfFirstPage_>
<MTPaginateIfMiddlePage_>
<a href="<$MTPaginateNextPageLink$>">&gt;&gt;&nbsp;next</a>
</MTPaginateIfMiddlePage_>
</MTPaginateIfMultiplePages>

</MTPaginate>

こんな感じ。
で、ページ上部に表示させたい場合は、

<MTPaginate>
<MTPaginateContent max_sections="10">
<MTEntries>

の、

<MTPaginate>

の下に追加して、

<MTPaginate>

<MTPaginateIfMultiplePages>
<MTPaginateIfMiddlePage_>
<a href="<$MTPaginatePreviousPageLink$>">previous&nbsp;&lt;&lt;</a>
</MTPaginateIfMiddlePage_>
<MTPaginateIfLastPage_>
<a href="<$MTPaginatePreviousPageLink$>">previous&nbsp;&lt;&lt;</a>
</MTPaginateIfLastPage_>
<$MTPaginateNavigator format_all="All Pages" placement_all="after">
<MTPaginateIfFirstPage_>
<a href="<$MTPaginateNextPageLink$>">&gt;&gt;&nbsp;next</a>
</MTPaginateIfFirstPage_>
<MTPaginateIfMiddlePage_>
<a href="<$MTPaginateNextPageLink$>">&gt;&gt;&nbsp;next</a>
</MTPaginateIfMiddlePage_>
</MTPaginateIfMultiplePages>

<MTPaginateContent max_sections="10">
<MTEntries>

ってな感じでしょうか?
ウチみたいにアイテムや広告を入れてる方は色々調節してみてください。
上下両方に入れたい場合は両方で。


分割後、最初に表示されてるのは、

All Pages | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 >> next

こんな感じ。(このページ数はエントリーの数によって違います)
「>> next」をクリックすることで、順番に見ることができます。

2ページ目〜最後のページの1ページ前までは、

previous << All Pages | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 >> next

のように、「previous << 」が追加されます。

で、最後のページは、

previous << All Pages | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8

のように、「>> next」が消えます(当たり前ですが)。

自分で過去のエントリーを見るとき、どうしても全部いっぺんに見たいときがあるので、
「All Pages」を追加しました(じゃ、分割する意味ない?)


ありがとうございました。


ウチでは、釣行記等のページを、カテゴリーで表示(カテゴリーにリンク)させるのではなく、メインページとは別のインデックスページを作ってメニューの1つとして表示させています。
メインページとほぼ同じ内容のインデックスページを新しく作り(ほぼコピペ)、1つのカテゴリーのエントリーだけ表示させているだけです。なので内容的にはカテゴリーページと同じなのですが、メインページやカテゴリーページとは違ったサイドバーアイテムの設置やレイアウトの修正などをしています。(アイテム以外は微妙な修正なのですが)
なので、そのページでも同じように分割させています。

あ、もちろん、複数のカテゴリーを指定してやればもっとカテゴリーページとは違った内容になるかと。。。
複数のカテゴリーを表示、または、あるカテゴリーを非表示って場合は、「CatEntries」(英語)をダウンロードしてプラグインフォルダへアップ。

あるカテゴリーのエントリーだけを表示させたくない場合は、

<MTCatEntries exclude="カテゴリ名1,カテゴリ名2">

</MTCatEntries>

(” , ”で区切ります。)


あるカテゴリーのエントリーだけを表示させたい場合は、

<MTCatEntries include="カテゴリ名1,カテゴリ名2">

</MTCatEntries>

と言う感じでしょうか。

また、メイン(トップ)ページや他のインデックスページで使う場合、

<MTPaginate>
<MTPaginateContent max_sections="10">
<MTEntries lastn="50">

というように、「lastn="50"」を追加することで、最新から50個まのエントリーを表示というように指定できます。もちろん数字は”50”じゃなくてもOKですが、ページ分割の1ページの表示数とのかねあいもあるのでお好みで。指定しなくてもOKだと思いますが、表示させるカテゴリー(の組み合わせ)によっては何百とかになってしまいそうなので、一応。。。
普通の釣行記」(旧ブログ)
釣りの記憶」(旧ブログ)

同じ名前のカテゴリーページと比べると差がわかると思います。

じゃあ、カテゴリーリストから、重複してるカテゴリーを無くせば混乱が無くなる?
そんな場合は、

staggernation.com」(英語)さんの、「FilterCategories」をダウンロードしてプラグインフォルダへアップ。

あるカテゴリーをリストに表示させたくない場合は、

<MTCategories show_empty="1">
<MTFilterCategories exclude="カテゴリ名1|カテゴリ名2">

</MTFilterCategories>
</MTCategories>

という感じ。(複数の場合は、”|”で区切ります)

あるカテゴリーをリストに表示させたい場合は、

<MTCategories show_empty="1">
<MTFilterCategories include="カテゴリ名1|カテゴリ名2">

</MTFilterCategories>
</MTCategories>

を、カテゴリーリストに組み込むことで調整できます。


とまぁ、ページ分割から始まって、インデックスの追加、カテゴリーリストの表示非表示まで、一度書いた記事をまた書いちゃいました。後で見たときに一回で済むからまぁいいか。。。

Comment

Post a comment
















管理者にだけコメントをわたす。

 

Trackback

Trackback Pings

※この記事に関係の無いトラックバックは削除させていただきます。
FC2ブログユーザーは”こちら”をクリック。

このエントリーのURL
 

copyright © 武州屋 all rights reserved. Powered by FC2ブログ.ホームページ アフィリエイト レンタルサーバー FC2ブログ