Movable Type 備忘録
メインページと同様のコメント一覧をアーカイブページで表示する
- Prev Page: 新規エントリをVOXにもクロスポストする
- Next Page: テンプレートのスタイルを動的に切り替える
おはよです^^
昨日、嬉しい報告がありまして、今日はお祝いに逆転裁判4を買いに行くことになりました。
既にオブジェと化している、わたしのニンテンドーDSも少しは使ってあげないといけないかな (; ̄∇ ̄A
そんな話はサラぁ~と流して、朝食の支度の前に昨日書いた記事をサクっと投稿します。
今回はメインページで表示している、最近のエントリ一覧、コメント一覧、トラックバック一覧を、アーカイブページ(個別エントリやカテゴリなど)にも表示させるカスタマイズのご紹介です。
既にご存知かと思いますが、MovableType(ムーバブルタイプ)ではメインページのサイドバーに表示している最近のエントリ一覧を、全く同じように個別エントリやカテゴリページに表示させることは通常できません。
それをまったく同じように表示させる方法を2つご紹介します。
まったく同じように表示させるには、以下の2通りの方法があるかと思います。
インデックス・テンプレートを作成して各アーカイブ内で読み込む方法
カンタンに言うと、最近のエントリ一覧やコメント一覧を、個々に外部ファイルにすることで、メインページおよび、各アーカイブページでデータを共有させる方法です。プラグインを使用する方法
blog.aklaswad.comさんで公開している、 idxctxプラグインを使用することで局所的にメインページと同じ振る舞いをさせる方法です。
ちなみに、わたしのサイトでは「1.」の方法で、各アーカイブページに最近のエントリ一覧を表示させています。
インデックス・テンプレートを作成して各アーカイブ内で読み込む方法
こちらの方法はブログのPHP化を行っていることが前提となります。via: MovableTypeをPHP化する
まず、最近のエントリ一覧を外部ファイル化します。
MovableType(ムーバブルタイプ)の管理画面からブログを選択して、左サイドバーにある「テンプレート」をクリックします。
そして右上にある「テンプレートを新規作成」をクリックします。各自のメインページで使用している最近のエントリ一覧をコピペして保存/再構築します。
設定内容は以下の通りです。テンプレート名: 最近のエントリ一覧(任意)出力ファイル名: widget/recent-entries.php(任意)このテンプレートにリンクするファイル: 未記入テンプレートの内容: たとえば、以下のようなタグ
<div class="module-archives module"><h2 class="module-header">Recent Entries</h2><ul class="module-list"><MTEntries lastn="10"><li><a href="<$MTEntryPermalink$>" title="<$MTEntryTitle$>"><$MTEntryTitle$></a><$MTEntryDate format='%Y%m%d'$></li></MTEntries></ul></div>
同様の手順で、最近のコメント一覧(widget/recent-comments.php)、トラックバック一覧(widget/recent-trackbacks.php)のインデックス・テンプレートを作成します。
一通り作成したら、まずはメインページ内の既存の各一覧タグを以下のコードで差し替えます。
最近のエントリ一覧の場合
<?php include('<$MTBlogURL$>widget/recent-entries.php'); ?>
最近のコメント一覧の場合
<?php include('<$MTBlogURL$>widget/recent-comments.php'); ?>
最近のトラックバック一覧の場合
<?php include('<$MTBlogURL$>widget/recent-trackbacks.php'); ?>
一通り差し替えたら、再構築します。
以上で完了です。
メインページをブラウザから表示してみてください。問題なく表示されたら、個別エントリ/カテゴリ/月別アーカイブを同じように差し替えて、再構築すれば完了です。
プラグインを使用する方法
今度はプラグインを使用した場合の方法です。
このプラグインは、以前試しに使った程度で、わたしのサイトでは今は使ってません。
こちらの方法はブログのPHP化を行っていなくても問題ありません。
まず、こちらのidxctx プラグインというのを作ってみました。からプラグインを入手します。
そして、適当なフォルダに展開します。いつものようにmt/plugins/ディレクトリの中にindexcontext.plをアップロードします。
最後にメインページ内の既存の各一覧タグを以下のように変更します。
最近のエントリ一覧の場合
<div class="module-archives module"><h2 class="module-header">Recent Entries</h2><ul class="module-list"><MTIndexContext><MTEntries lastn="10"><li><a href="<$MTEntryPermalink$>" title="<$MTEntryTitle$>"><$MTEntryTitle$></a><$MTEntryDate format='%Y%m%d'$></li></MTEntries></MTIndexContext></ul></div>
最近のコメント一覧の場合
<MTIfCommentsActive><div class="module-recent-comments module"><h2 class="module-header">Recent Comments</h2><ul class="module-list"><MTIndexContext><MTEntries recently_commented_on="5"><li><a href="<$MTEntryLink$>" title="<$MTEntryTitle$>"><$MTEntryTitle$></a><ul><MTComments lastn="3"><li><a href="<$MTEntryLink$>#c<$MTCommentID$>"><MTCommentAuthor></a><$MTCommentDate format="%y/%m/%d"$></li></MTComments></ul></li></MTEntries></MTIndexContext></ul></div></MTIfCommentsActive>
最近のトラックバック一覧の場合
<MTIfPingsActive><div class="module-recent-comments module"><h2 class="module-header">Recent Comments</h2><ul class="module-list"><MTIndexContext><MTPings lastn="5"><li><a href="<$MTPingURL$>" title="<$MTPingTitle$>"><$MTPingTitle$> from<$MTPingBlogName$></a> <$MTPingDate format="%y%m/%d"$></li></MTPings></MTIndexContext></ul></div></MTIfPingsActive>
青い字の部分を、上記のように追加します。
また、この作業を各テンプレートで個別に行ってもいいのですが、各一覧のタグをモジュール化しておくと便利です ( ̄∇ ̄)b
MovableTypeのモジュールを作ってみる一通り追加したら再構築します。
以上でメインページとまったく同じエントリ一覧やコメント一覧、トラックバック一覧を各アーカイブページにも表示することができます。
どちらの方法を使うかは各自の好みもあると思いますので、お任せします。
Trackback Pings(0)
No trackbacks found.




こんにちは
とても参考になりました
組み込んだときにエラーが出ましたので・・・
>最近のコメント一覧(widget/recent-comments.php)、
>
コピペしましたが
comments と commnets となっています
(nとeがいれかわっています)
原因がわかれば 単純でしたが phpがえらー吐き出すので
原因がわかるまで結構悩みました(笑)
>>1 dai さん
こんばんわ^^
あちゃ
ありがとうございます。
記事修正しておきます。
わたしの記述ミスでお時間取らせてしまってすいません