Movable Type 備忘録

 メインページと同様のコメント一覧をアーカイブページで表示する

おはよです^^

昨日、嬉しい報告がありまして、今日はお祝いに逆転裁判4を買いに行くことになりました。
既にオブジェと化している、わたしのニンテンドーDSも少しは使ってあげないといけないかな (; ̄∇ ̄A

そんな話はサラぁ~と流して、朝食の支度の前に昨日書いた記事をサクっと投稿します。

今回はメインページで表示している、最近のエントリ一覧、コメント一覧、トラックバック一覧を、アーカイブページ(個別エントリやカテゴリなど)にも表示させるカスタマイズのご紹介です。

既にご存知かと思いますが、MovableType(ムーバブルタイプ)ではメインページのサイドバーに表示している最近のエントリ一覧を、全く同じように個別エントリやカテゴリページに表示させることは通常できません。

それをまったく同じように表示させる方法を2つご紹介します。

まったく同じように表示させるには、以下の2通りの方法があるかと思います。

  1. インデックス・テンプレートを作成して各アーカイブ内で読み込む方法
    カンタンに言うと、最近のエントリ一覧やコメント一覧を、個々に外部ファイルにすることで、メインページおよび、各アーカイブページでデータを共有させる方法です。

  2. プラグインを使用する方法
    blog.aklaswad.comさんで公開している、 idxctxプラグインを使用することで局所的にメインページと同じ振る舞いをさせる方法です。

ちなみに、わたしのサイトでは「1.」の方法で、各アーカイブページに最近のエントリ一覧を表示させています。

インデックス・テンプレートを作成して各アーカイブ内で読み込む方法

こちらの方法はブログのPHP化を行っていることが前提となります。via: MovableTypeをPHP化する

  1. まず、最近のエントリ一覧を外部ファイル化します。
    MovableType(ムーバブルタイプ)の管理画面からブログを選択して、左サイドバーにある「テンプレート」をクリックします。
    そして右上にある「テンプレートを新規作成」をクリックします。

    各自のメインページで使用している最近のエントリ一覧をコピペして保存/再構築します。
    設定内容は以下の通りです。

    1. テンプレート名: 最近のエントリ一覧(任意)
    2. 出力ファイル名: widget/recent-entries.php(任意)
    3. このテンプレートにリンクするファイル: 未記入
    4. テンプレートの内容: たとえば、以下のようなタグ
    1. <div class="module-archives module">
    2.     <h2 class="module-header">Recent Entries</h2>
    3.  
    4.     <ul class="module-list">
    5.     <MTEntries lastn="10">
    6.         <li><a href="<$MTEntryPermalink$>" title="<$MTEntryTitle$>"><$MTEntryTitle$></a>
    7. <$MTEntryDate format='%Y%m%d'$></li>
    8.     </MTEntries>
    9.     </ul>
    10. </div>
  2. 同様の手順で、最近のコメント一覧(widget/recent-comments.php)、トラックバック一覧(widget/recent-trackbacks.php)のインデックス・テンプレートを作成します。

  3. 一通り作成したら、まずはメインページ内の既存の各一覧タグを以下のコードで差し替えます。

    最近のエントリ一覧の場合

    1. <?php include('<$MTBlogURL$>widget/recent-entries.php'); ?>

    最近のコメント一覧の場合

    1. <?php include('<$MTBlogURL$>widget/recent-comments.php'); ?>

    最近のトラックバック一覧の場合

    1. <?php include('<$MTBlogURL$>widget/recent-trackbacks.php'); ?>
  4. 一通り差し替えたら、再構築します。

以上で完了です。
メインページをブラウザから表示してみてください。問題なく表示されたら、個別エントリ/カテゴリ/月別アーカイブを同じように差し替えて、再構築すれば完了です。

プラグインを使用する方法

今度はプラグインを使用した場合の方法です。
このプラグインは、以前試しに使った程度で、わたしのサイトでは今は使ってません。

こちらの方法はブログのPHP化を行っていなくても問題ありません。

  1. まず、こちらのidxctx プラグインというのを作ってみました。からプラグインを入手します。
    そして、適当なフォルダに展開します。

  2. いつものようにmt/plugins/ディレクトリの中にindexcontext.plをアップロードします。

  3. 最後にメインページ内の既存の各一覧タグを以下のように変更します。

    最近のエントリ一覧の場合

    1. <div class="module-archives module">
    2.     <h2 class="module-header">Recent Entries</h2>
    3.  
    4.     <ul class="module-list">
    5.     <MTIndexContext>
    6.     <MTEntries lastn="10">
    7.         <li><a href="<$MTEntryPermalink$>" title="<$MTEntryTitle$>"><$MTEntryTitle$></a>
    8. <$MTEntryDate format='%Y%m%d'$></li>
    9.     </MTEntries>
    10.     </MTIndexContext>
    11.     </ul>
    12. </div>

    最近のコメント一覧の場合

    1. <MTIfCommentsActive>
    2. <div class="module-recent-comments module">
    3.     <h2 class="module-header">Recent Comments</h2>
    4.  
    5.     <ul class="module-list">
    6.     <MTIndexContext>
    7.     <MTEntries recently_commented_on="5">
    8.         <li><a href="<$MTEntryLink$>" title="<$MTEntryTitle$>"><$MTEntryTitle$></a>
    9.             <ul>
    10.             <MTComments lastn="3">
    11.             <li><a href="<$MTEntryLink$>#c<$MTCommentID$>"><MTCommentAuthor></a>
    12.  <$MTCommentDate format="%y/%m/%d"$></li>
    13.             </MTComments>
    14.             </ul>
    15.         </li>
    16.     </MTEntries>
    17.     </MTIndexContext>
    18.     </ul>
    19. </div>
    20. </MTIfCommentsActive>

    最近のトラックバック一覧の場合

    1. <MTIfPingsActive>
    2. <div class="module-recent-comments module">
    3.     <h2 class="module-header">Recent Comments</h2>
    4.  
    5.     <ul class="module-list">
    6.     <MTIndexContext>
    7.     <MTPings lastn="5">
    8.         <li><a href="<$MTPingURL$>" title="<$MTPingTitle$>"><$MTPingTitle$> from
    9. <$MTPingBlogName$></a> <$MTPingDate format="%y%m/%d"$></li>
    10.     </MTPings>
    11.     </MTIndexContext>
    12.     </ul>
    13. </div>
    14. </MTIfPingsActive>

    青い字の部分を、上記のように追加します。
    また、この作業を各テンプレートで個別に行ってもいいのですが、各一覧のタグをモジュール化しておくと便利です ( ̄∇ ̄)b
    MovableTypeのモジュールを作ってみる

  4. 一通り追加したら再構築します。

以上でメインページとまったく同じエントリ一覧やコメント一覧、トラックバック一覧を各アーカイブページにも表示することができます。

どちらの方法を使うかは各自の好みもあると思いますので、お任せします。

 Trackback Pings(0)

No trackbacks found.

 Comments(2)

#1: Posted by dai @ January 21, 2008 [REPLY]
user-pic

こんにちは

とても参考になりました

組み込んだときにエラーが出ましたので・・・

>最近のコメント一覧(widget/recent-comments.php)、

コピペしましたが
comments と commnets となっています
(nとeがいれかわっています)

原因がわかれば 単純でしたが phpがえらー吐き出すので
原因がわかるまで結構悩みました(笑)

#2: Posted by Author Profile Page bzbell @ January 21, 2008 [REPLY]
user-pic

>>1 dai さん

こんばんわ^^

あちゃキャハハ
ありがとうございます。

記事修正しておきます。
わたしの記述ミスでお時間取らせてしまってすいませんあせあせ

 Post a Comment

 

コメント用フィード