Movable Typeの「最近のブログ記事」をページ分割する
Movable Typeの「最近のブログ記事」をページ分割するカスタマイズを紹介します。
このカスタマイズを行えば、サイドバーの「最近のブログ記事」でページ送りができるようになります。ページングはAjaxで行います。
完成イメージ
以下にサンプルも用意しました。「最近のブログ記事」のページ送りを確認できます。
以下、「クラシックブログ」テーマをサンプルにしたカスタマイズを紹介します。
このカスタマイズにはPageButeプラグインが必要ですので、事前にインストールしてください。3.5.0(またはそれ以上)の利用をおすすめします。
このカスタマイズを応用すれば、たいていのリスト類はページ分割が行えると思います。
1.インデックステンプレートの作成
「最近のブログ記事」を出力するインデックステンプレートを作成します。テンプレートには以下の内容を貼り付けてください。テンプレート名は「最近のブログ記事」、出力ファイル名は「entries.html」としてください。保存後、再構築をしてください(再構築しないと後の手順でエラーになります)。
<div id="entries">
<div class="widget-recent-entries widget-archives widget">
<h3 class="widget-header">最近のブログ記事</h3>
<div class="widget-content">
<div class="nav">
<mt:ifPageBefore>
<$mt:PageBefore delim="« "$>
</mt:ifPageBefore>
<$mt:PageLists show_always="0"$>
<mt:ifPageNext>
<$mt:PageNext delim=" »"$>
</mt:ifPageNext>
</div>
<ul>
<mt:PageContents count="5" navi_count="3">
<mt:Entries lastn="20">
<li><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle encode_html="1"$></a></li>
<$mt:PageSeparator$>
</mt:Entries>
</mt:PageContents>
</ul>
</div>
</div>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
<script type="text/javascript">
//<![CDATA[
$(function(){
$('.widget-content .nav a').click(function(){
var url = $(this).attr('href');
$.ajaxSetup({
cache: false
});
$('#entries').load(url, function(text, status) {});
return false;
});
});
//]]>
</script>
お分かりと思いますが、ブログ記事一覧の中でPageButeのテンプレートタグを利用して、必要なページ分のファイルを出力しています。記事の表示件数などは以下の赤色部分で適宜調整してください。
<mt:PageContents count="5" navi_count="3">
<mt:Entries lastn="20">
PageButeプラグインで出力するページナビゲーションではAjaxによるページングが行えないので、テンプレート後半のjQueryで制御し、「最近のブログ記事」部分のみコンテンツを入れ替えるようにしています。
jQueryをすでに利用している場合は上記テンプレートに含まれる以下の部分を削除してください。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
2.ウィジェットの作成
1項のインデックステンプレートで出力したファイルを読み込むウィジェットを作成します。「クラシックブログ」テーマを使っている場合は「最近のブログ記事」ウィジェットの内容を以下に変更してもかまいません。
<mt:SetVarBlock name="path"><mt:BlogSitePath>entries.html</mt:SetVarBlock>
<$mt:include file="$path"$>
3.CSSの追加
スタイルシートに以下の内容を追加します。
.widget-content .nav {
text-align: center;
}
4.mt-congig.cgiの変更
MT5.13以降で本カスタマイズを利用する場合は、mt-config.cgiに環境変数AllowFileIncludeを追加してください。
AllowFileInclude 1
5.再構築
すべての設定が終わったら全体を再構築してください。
6.注意事項
2項のMTIncludeタグにidentifierモディファイアは利用できません。identifierモディファイアでインクルードすると、インクルードしたページ全体がページ分割対象になってしまいます。
- Movable Type 7のコンテンツデータ(コンテンツタイプアーカイブ)をページ分割する方法
- 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 化
- 検索結果のページ分割(3.3x 版)
はじめまして、いつも利用させていただいております。MT5でカスタムフィールドでフィルタリングしたリストをページ分割したページを作ろうとして、紆余曲折し、結局こちらの方法に落ち着きました。どうもありがとうございます。
ところでこちらで記載されているようにサイドバーに表示して使用する場合、ウェブサイトにインデックステンプレートを作成してグローバルウィジェットで傘下のブログのサイドバーに表示しようとしたのですが、<mt:SetVarBlock name="path"><mt:BlogSitePath>entries.html</mt:SetVarBlock>
<$mt:include file="$path"$>の点でエラーになってしまったようです。
<$mt:WebsitePath$>に書き換えるだけでもエラーだったのですが、どの点を修正すればよいのでしょうか?
またページ分割に関してなのですが、「Movable Typeのダイナミックパブリッシングでのページ分割ナビゲーションの不具合を解消する」でご教授されているblock.mtifmoreresults.phpの書き換えですが、試してみたところ不具合が治らなかったのですが、こちらはMT5.2だからでしょうか?それでは何卒よろしくお願い致します。