Category:ページ分割

2009年 07月 02日(木曜日) 00時 05分

検索結果ページ分割

 右上のサイドバーにあるブログ内検索での検索結果はMT4.2のデフォルト値で最大20件までしか表示出来ません。本来ならMT4.2では自動で検索ページを分割してくれるハズなのですが、古いテンプレートを使い続けている為なのか、PHPのバージョンなどの問題なのか分からないのですが、うちのブログではうまく表示されません。不本意ですが、MT3.3の時の分割方法を利用しました。まずは検索結果の最大値を増やします。

MovableTypeの「mt-config.cgi」ファイルに

SearchMaxResults 90
の1行を付け加えます。
値は最大検索件数です。

そしていつも参考にさせていただいている「小粋空間」さんの「検索結果のページ分割(3.3x 版)」を適応します。

ページナビゲーションを検索結果の下に移動させ、見た目をトップページのページ分割と統一する為、最大で9ページ分を表示します。(この9ページ分の為にSearchMaxResults値を90にしました。)

まあ、90件の検索結果を全部見る人なんていないと思いますが。w

2008年 09月 12日(金曜日) 14時 43分

ダイナミック・パブリッシングでのページ分割

 ダイナミック・パブリッシングでのページ分割がMT4.2より搭載されたので、公式サイトに則ってカスタマイズしました。これによって「旧MSF-NET・2001年度」の日記が表示されなくなっていた不具合を回避しています。
 エントリー数が多いページは分割タグが長くなってしまうので、WingMemoさんの「ダイナミック・パブリッシングで頁分割(8) MT4.2公式編」のサンプル7を少し自分のサイトに合うようにアレンジして利用させていただきました。改良後の記述を載せておきます。

<MTIfArchiveType archive_type="Category">
<!-- 頁分割ここから -->
<MTSetVarBlock name="pageno"><$MTCurrentPage$></MTSetVarBlock>
<MTPagerBlock>
<MTIf name"__last__"><MTSetVarBlock name="last"><MTVar name="__value__"></MTSetVarBlock></MTIf>
</MTPagerBlock>
<MTSetVarBlock name="last2"><MTGetVar name="last" value="5" op="-"></MTSetVarBlock>

<MTIf name="pageno" ge="5">
<MTIf name="pageno" le="$last2">
<MTSetVarBlock name="from"><MTVar name="pageno" value="4" op="-"></MTSetVarBlock>
<MTSetVarBlock name="to"><MTVar name="pageno" value="4" op="+"></MTSetVarBlock>
<MTElse>
<MTSetVarBlock name="from"><MTGetVar name="last" value="8" op="-"></MTSetVarBlock>
<MTSetVar name="to" value="$last">
</MTIf>
<MTElse>
<MTSetVar name="from" value="1"><MTSetVar name="to" value="9">
</MTIf>

<MTIf name="last" eq="1"><MTElse>

<div class="categorypaginate">
<MTPagerBlock>
<MTIf name="to" gt="9">
<MTIf name"__first__"><a href="<MTPagerLink>">« First </a></MTIf>
</MTIf>

<MTIf name="__value__" ge="$from"><MTIf name="__value__" le="$to">
| <MTIfCurrentPage><MTVar name="__value__"><MTElse><a href="<MTPagerLink>"><MTVar name="__value__"></a></MTIfCurrentPage>
</MTIf></MTIf>

<MTIf name="to" lt="$last">
<MTIf name"__last__">| <a href="<MTPagerLink>">Last »</a></MTIf>
</MTIf>
</MTPagerBlock>

<MTIf name="last" lt="10">| </MTIf>
</div>
</MTIf>

<!-- 頁分割ここまで -->
</MTIfArchiveType>

 1行目と最終行はカテゴリーアーカイブの場合の分岐です。
 ページ分割を表示するMTPagerBlockタグの前に分岐でLast値が1ならばページ分割を表示しないように追記しました。これは1ページ以内に記事が納まる場合(limitの値)に、ページ分割を表示させないようにする為です。
 <div class="categorypaginate">でclass属性を付けてページ分割を表示に使うスタイルシートを反映させています。それぞれに合わせてスタイルシートを変更して下さい。
 サンプルでは次項、前項のリンクが入ってるのですが、あまり必要ない気がしましたので、FirstとLastでアーカイブの1ページ目と最終ページへ飛ぶように変更しました。
 MTPagerBlockタグ内と、その最後にある <MTIf name="last" lt="10"> で、「|」線を両端に付け加えるように追加しました。これはメインページで使っているMTPagenateと見た目を統一するために付け加えたものです。

→ MovableType公式 「ダイナミックパブリッシングでのページ分割

 また、WingMemoのTAEKOさんには大変お世話になりました。
WingMemo

2006年 05月 22日(月曜日) 10時 52分

ページ分割

長くなる文章などをページ分割出来るようにしました。
もちろん参考サイトはページ分割ココですw

PHP化は済ませてあるので、読み飛ばしました。ヽ(´ー`)ノ

月別のエントリーは31日分が一気に表示されますので、5つの書き込み毎にページ分割して表示します。一番下にナビゲーションが表示されるようになります。
トップページも同様ですが、ナビゲーションがあると便利なので追加してあります。

トップページの分割、カテゴリーアーカイブと月別アーカイブのページ分割は上記のように分割されるのでいいのですが、エントリーアーカイブのページ分割については、ちょっと特殊な感じです。
エントリーアーカイブの場合、表示されるのは一つの書き込み(エントリー)のみですが、本文中に<pb>タグを入れるコトで、そのタグを分割用セパレータと認識される仕組みにしてみました。
適当な文字列でも可能ですが、これを月別表示等で見ると、全頁を表示する時にセパレータに使用したタグが出てしまうので、影響がでない架空の覚えやすいタグを勝手に作ってしまうのがいいかと思います。
月別やトップページでも使えたらいいのですが…。
↑試してみたらエラーでちゃったから、わからんヽ(´ー`)ノ

せっかくだから、ここで使ってみます。
↓をクリックしてください。この記事のエントリーページに切り替わります。
ページ分割
2ページ目へ飛ぶと続きが表示されます。

エントリーアーカイブの記述で少し間違い(?)があったので、紹介しておきます。

小粋空間さんの「エントリーアーカイブのページ分割」の中の「7.ページリンク表示位置の変更」下にリンクを表示させる場合を使ってます。下記は書き換えるサンプルの一部です。

<div class="entry-content">
<MTPaginateContent max_words="1" section_start_tag="p">
<div class="entry-body">
<$MTEntryBody$>
</div>
</MTPaginateContent>

これだと、何故か<div class="entry-body">と</div>がHTMLに書き出されない場合があります。
最初は体裁が崩れまくって焦りましたが、</div>タグの閉じ方がおかしいと気づきました。なので、

<div class="entry-content">
<div class="entry-body">
<MTPaginateContent max_words="1" section_start_tag="pb">
<$MTEntryBody$>
</MTPaginateContent>
</div>

こんな感じに変更してみました。しかし、なんでHTMLに書き出されなかったのか、本当の原因はわかんなかったりします…

追記について。
 → 続きを読む ≫ をクリックしましょうw

そんなわけで、ブログの使い勝手向上にはなるものばかりなので、使ってみてください~。
ページの分割は以上でっす。