エントリーアーカイブのページ分割
6.テンプレートの修正
エントリーアーカイブテンプレートにページ分割用タグを設定します。
エントリーを分割するには分割するためのキーワード(セパレータ)が必要ですが、ここでは
- HTML要素
- エントリー内の文字列
- セパレータ
の3種類を使った分割方法について説明します。
6.1 HTML要素でページ分割する
エントリーアーカイブの MTEntryBody の前後に下記の青色部分を追加します。リストはデフォルトテンプレートの場合です。
<MTPaginate>
<h3 class="entry-header"><$MTEntryTitle$></h3>
<div class="entry-content">
<MTPaginateIfMultiplePages>
<div class="paginate">
<MTPaginateIfPreviousPage_>
<a href="<$MTPaginatePreviousPageLink$>" title="前のページへ"><</a>
</MTPaginateIfPreviousPage_>
<$MTPaginateNavigator format_all="All Pages" place_all="after"$>
<MTPaginateIfNextPage_>
<a href="<$MTPaginateNextPageLink$>" title="次のページへ">></a>
</MTPaginateIfNextPage_>
</div>
</MTPaginateIfMultiplePages>
<MTPaginateContent max_words="1" section_start_tag="p">
<div class="entry-body">
<$MTEntryBody$>
</div>
<div id="more" class="entry-more">
<$MTEntryMore$>
</div>
</MTPaginateContent>
</div>
</MTPaginate>
3.2-ja 公開テンプレートの場合は下記の通りです。HTMLは若干異なっていますがページ分割用タグの挿入位置は同じです。
<!-- エントリータイトル -->
<MTPaginate>
<h3 class="entry-header">●<$MTEntryTitle$></h3>
<!-- エントリー -->
<div class="entry-content">
<MTPaginateIfMultiplePages>
<div class="paginate">
<MTPaginateIfPreviousPage_>
<a href="<$MTPaginatePreviousPageLink$>" title="前のページへ"><</a>
</MTPaginateIfPreviousPage_>
<$MTPaginateNavigator format_all="All Pages" place_all="after"$>
<MTPaginateIfNextPage_>
<a href="<$MTPaginateNextPageLink$>" title="次のページへ">></a>
</MTPaginateIfNextPage_>
</div>
</MTPaginateIfMultiplePages>
<MTPaginateContent max_words="1" section_start_tag="p">
<div class="entry-body"><$MTEntryBody$></div>
<!-- 追記 -->
<MTEntryIfExtended>
<div id="more" class="entry-more"><$MTEntryMore$></div>
</MTEntryIfExtended>
</MTPaginateContent>
</div><!-- /entry-content -->
</MTPaginate>
上記リストの15行目(公開テンプレートのリストは18行目)にある、
section_start_tag="p"
が分割対象のタグを指定する部分です。赤色の p は p 要素を示しており、つまりこの例では p 要素で分割する設定になっています。この部分にセパレータにしたい任意のHTML要素名を設定してください。
p 要素はエントリーの編集画面の下にある「改行設定(3.1x以前は「テキストフォーマット」)」で「改行を変換する」という指定になっていれば、空行が p 要素に変換されます。したがって手動で付与する必要はありませんが、上記リストの設定では空行がページ分割のセパレータとなりますので、分割ページに空行を含む場合は他のHTML要素を指定するか、6.2項または6.3項の設定をお勧めします。
また section_start_tag 属性でページ分割する場合、max_words 属性(または max_bytes 属性)の設定が必須のようです。また max_xxx の設定が section_start_tag より優先されるため、これらに大きな値を設定していると、section_start_tag で指定したHTML要素が含まれていても、そこでページ分割されない可能性があります。
本来は両者を使ってページ分割を制御するようですが、とりあえずここでは最小値("1")を設定して常にHTML要素でページ分割される設定にしています。
赤色で示している div 要素はページ分割機能とは直接関係ありませんが、ページリンク用のスタイルを指定する場合を考慮して設定しています。必要に応じて下記のようなCSSをスタイルシート(styles-site.css)に追加してください。6.2項、6.3項も同様です。
.paginate {
text-align: center;
font-size: 9px;
}
6.2 エントリー内の文字列でページ分割する
次にエントリー内の文字列でページ分割する方法です。ここでは section_start 属性を利用します。
6.1項の
<MTPaginateContent max_words="1" section_start_tag="p">
の部分を
<MTPaginateContent max_words="1" section_start="<div class="section">">
に置き換えて設定します。赤色部分がセパレータとなります。この例では
<div class="section">
がセパレータですが、これは
<div class="section">
と同じで、つまりエントリー内に挿入した、class 属性が "section" という div 要素をセパレータとしてページ分割が行われます。タグの「<」 と「>」およびクォート「"」は文字実体参照にします。他の設定は6.1と同様です。
6.3 page_break で分割する
3つめは、エントリーにページ分割専用のセパレータを挿入する方法です。プラグインはこの特定のセパレータ(文字列)をサーチしてページ分割します。
例えば「=====」という文字列をセパレータにする場合、ページ分割したい段落と段落の間に、
段落1
=====
段落2
という具合にセパレータを挿入します(ここではセパレータの上下に空行を挿入することとします)。
6.2項と同様6.1項のリストの、
<MTPaginateContent max_words="1" section_start_tag="p">
の部分を、
<MTPaginateContent page_break="<p>=====</p>">
に置き換えて設定します。赤色部分がセパレータとなります。この例では
<p>=====</p>
がセパレータですが、エントリー登録時、エントリーの編集画面で「改行を変換する」という設定になっている場合、セパレートには p 要素が付与されて、実際のHTMLページでは
<p>=====</p>
となりますので、page_break 属性にはセパレータ文字列の「=====」と、その前後に文字実体参照にした 「<p>」と「</p>」で挟んだ形で設定します。
注意点は、エントリーアーカイブでセパレータが設定されたページを一括表示した時、セパレータは表示されませんが、他のアーカイブやメインページ等ではセパレータが表示されます(他のページでは同じカスタマイズを施していないので当然ですが)。これが6.2項との大きな違いです。
ということで、本項の場合は表示されても差し支えないセパレータを付与するようにしてください。なお6.2項と同様にHTML要素を指定すると、エントリーアーカイブの一括表示で指定HTML要素が除去されてしまいますのでご注意ください。
- Movable Type 7のコンテンツデータ(コンテンツタイプアーカイブ)をページ分割する方法
- Movable Typeでブログ記事やウェブページをページ分割する方法
- Movable Typeの「最近のブログ記事」をページ分割する
- PageButeプラグインでページ分割がないときにナビゲーションや(X)HTMLマークアップを表示しない方法
- Movable Typeのダイナミックパブリッシングでのページ分割ナビゲーションの不具合を解消する
- Movable Type 5のダイナミックパブリッシングでのページ分割について
- Movable Type のページ分割でページ番号を title 要素に表示する
- Movable Type のページ分割によるナビゲーションの前後ページ表示を絞り込む(改)
- ダイナミックパブリッシングによるページ分割
- コメントのページ分割 for Movable Type 4
- PageBute プラグインによるページ分割
- Movable Type のページ分割によるナビゲーションの前後ページ表示を絞り込む
- アーカイブページのページ分割 for Movable Type 4.1
- メインページのページ分割 for Movable Type 4
- ページ分割の Ajax 化
≫ 検索機能追加 from MediAhead.jp
文字化け対応に少し手こずりましたが、検索機能を追加しました。 次は検索結果を複数... [続きを読む]
≫ MTPaginateを使う from Sunflower
MTPaginateには様々な属性を適用させることができます。 使えそうな部分と... [続きを読む]
≫ MT4でページ分割をする方法 from Wordpress trial
結論としてはMT4でも使えるよ!と言うことなんですが。
MTでページ分割をする方法としては
MT Extensions: MTPaginate 1.28
... [続きを読む]
≫ アーカイブページを分割するプラグイン Paged Archives from CSS Lecture
Paged ArchivesはPHP化せずにアーカイブページを分割する事が出でき... [続きを読む]
≫ MTでページの分割を可能にするプラグイン『MTPaginate』 from caraldo.net | WebとiPhoneとロードバイクが大好き!
世には様々なBlogがありますが、こんな感じでページが分割されているのをよく見ませんか? カテゴリー分けされていたり、日付で分けられていたり 確かにそれも... [続きを読む]
はじめまして。いつもカスタマイズの参考に拝見させて頂いております。
ページ分割をして早速エントリーを投稿してみたのですが、
やりたかった事が画像2枚ごとに分割して絵本の様なエントリーにするというもので、
普通に2枚分の画像のソースを書いて分割するだけでは上手く行かず、必ずHTML以外の文字列が含まれていないと分割が上手く行かないという結論に達しました。
現在、↓のページで苦肉の策で画像の後に.(ピリオド)を入れる方法をとっています。
http://abeke.ciao.jp/manga/20060516010714.php
が、見栄えがあまり良くないのでもし画像のみでも分割が行える方法がありましたら
御教え願えないでしょうか?よろしく御願いします。
>アベさん
はじめまして。
ご利用ありがとうございます。
ご質問の件について確認したところ、たしかにHTMLタグの記述のみでは分割セクションとみなされないようです。
プラグインに少し手を加えて動作を確認してみます。うまくできそうであればエントリー致しますので少々お時間ください。
それではよろしくお願い致します。