記事本文
Recent Reaction template ver.2 の概要
Recent Reaction template にて公開しているテンプレートを、別のプラグインを用いて記事ごとにまとめるような設計に変更したものです。 Recent Reaction template は、 Recent Comments と Recent Trackbacks をそれぞれまとめていましたが、 Recent Trackbacks については同一記事に対してのトラックバックをまとめることは不可能でした。
最近のトラックバックをエントリごとにまとめて表示
Recent Reaction の Recent Trackbacks の欄を見ればお分かりになると思いますが、 Recent Comments と違い、記事ごとにトラックバックをまとめていません。 これは単純に recently_commented_on にあたるような属性が定義されていないことによります。
と以前述べていましたが、見透かされていたかのように解決策が出されていました。
最近のコメントをエントリごとにまとめて表示するのは、MTEntriesのrecently_commented_onオプションを使うことで簡単に実現できるのですが、トラックバックだとそうはいきません。 このエントリでは、最近のトラックバックをエントリごとにまとめて表示する方法を説明します。
ここで説明する方法は、エントリの表示方法をMTEntryIDに基づいた順番だけでなく、最近トラックバックを受け取った順番(recently_commented_onに類似した順番と考えてください)などにカスタマイズ可能です。
必須プラグイン
PingEntry については、 Ogawa::Memoranda: 最近のトラックバックをエントリごとにまとめて表示で示されているパッチを当てる必要があります。 プラグイン自体の使用法についても同記事を参照してください。
テンプレートの作成手順
-
テンプレートをクリックします。
-
新しいインデックス・テンプレートを作るをクリックします。
-
テンプレートの名前を Recent Reaction template ver.2 にし、出力ファイル名を recent_reaction_2.html にしてください。
( これらは一例です。
お好きな名前にしていただいて構いません。
また、 Movable Type の使用環境に合わせて、拡張子を適宜 .html や .shtml や .php に変更してください。 )
インデックス・テンプレートを再構築するときにこのテンプレートを自動的に再構築するにチェックを入れてください。
-
テンプレートの中身をテンプレートの記述例を参考にして記述します。
-
保存をクリックします。
-
このテンプレートを再構築するをクリックして完成。
テンプレートの記述例
最低限の要素と、該当部分だけを記述しています。 スタイルシートやナビゲーションなどは各自追加してください。
<?xml version="1.0" encoding="<$MTPublishCharset$>"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-type" content="text/html;charset=<$MTPublishCharset$>" />
<title><$MTBlogName$> - Recent Reaction ver.2</title>
</head>
<body>
<h1><$MTBlogName$> - Recent Reaction ver.2</h1>
<h2>Recent Comments</h2>
<dl>
<MTEntries recently_commented_on="1000">
<dt><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></dt>
<dd>
<ol>
<MTComments>
<li><a href="<MTCommentEntry><$MTEntryPermalink$></MTCommentEntry>#c<$MTCommentID$>"><$MTCommentDate format="%Y/%m/%d %H:%M"$> : <$MTCommentAuthor$></a></li>
</MTComments>
</ol>
</dd>
</MTEntries>
</dl>
<h2>Recent Trackbacks</h2>
<MTCollateCollect>
<MTPings lastn="1000">
<MTCollateRecord>
<MTCollateSetField name="ping_id"><$MTPingID$></MTCollateSetField>
<MTCollateSetField name="ping_url"><$MTPingURL$></MTCollateSetField>
<MTCollateSetField name="ping_title"><$MTPingTitle$></MTCollateSetField>
<MTCollateSetField name="ping_blog_name"><$MTPingBlogName$></MTCollateSetField>
<MTCollateSetField name="ping_date"><$MTPingDate format="%Y/%m/%d %H:%M"$></MTCollateSetField>
<MTPingEntry>
<MTCollateSetField name="entry_key"><MTPings lastn="1"><$MTPingDate format="%y%m%d%H%M%S"$></MTPings></MTCollateSetField>
<MTCollateSetField name="entry_link"><$MTEntryLink$></MTCollateSetField>
<MTCollateSetField name="entry_title"><$MTEntryTitle$></MTCollateSetField>
</MTPingEntry>
</MTCollateRecord>
</MTPings>
</MTCollateCollect>
<dl>
<MTCollateList sort="entry_key:#:- ping_id:#:+">
<MTCollateIfHeader name="entry_key">
<dt><a href="<$MTCollateField name="entry_link"$>" title="<$MTCollateField name="entry_title" encode_html="1"$>"><$MTCollateField name="entry_title"$></a></dt>
<dd><ol>
</MTCollateIfHeader>
<li>
<a href="<$MTCollateField name="ping_url"$>" title="<$MTCollateField name="ping_title" encode_html="1"$>"><$MTCollateField name="ping_date"$> : <$MTCollateField name="ping_blog_name"$> - <$MTCollateField name="ping_title"$></a>
</li>
<MTCollateIfFooter name="entry_key">
</ol></dd>
</MTCollateIfFooter>
</MTCollateList>
</dl>
<p>
Powered by <a href="http://www.movabletype.org">Movable Type <$MTVersion$></a>
</p>
</body>
</html>
サンプル
これは hxxk.jp のテンプレートとして作成していますので、 hxxk.jp にコメントやトラックバックが寄せられることにより、随時更新されます。
正式採用のテンプレートが決定したため、自動での再構築はしないように変更しました。
必ずしも最新のコメントが反映されているとは限りません。
Recent Comments の解説
hxxk.jp - Recent Reaction ver.2 の Recent Commnets の欄を見ればお分かりになると思いますが、記事ごとに投稿されたコメントをまとめて、かつコメント投稿日時が最も新しいものを子に持つ記事が一番上に来るようになっています。 これは <MTEntries> タグの属性として recently_commented_on を指定することで実現しています。
サンプルではこの値に 1000 を指定していますが、これはコメントが投稿された記事を最大 1000 件表示し、コメントの投稿日時がより新しいものを子に持つものを順に並べるという結果を得ることができます。
Recent Trackbacks の解説
基本的には Ogawa::Memoranda: 最近のトラックバックをエントリごとにまとめて表示の記述とあまり変わりません。 ただ、あちらの記述では dt 要素に対して dd 要素を複数並べているのに対し、一つの記事に対するトラックバックは一つの dd 要素にまとめ、その中で ol 要素を使って羅列しています。
活用例
- 独立したテンプレートとして使用するのでなく、ソースの一部分を各種テンプレートに組み込み
- コメントやトラックバックの管理に

