記事本文
Recent Reaction template の概要
いわゆるサイドバー的な部分に配置されることがよくある (?) Recent Comments や Recent Trackbacks を一つのページにまとめてしまおう、というテンプレートです。 Recent Entries や Monthly Archives はともかく、 Recent Comments や Recent Trackbacks は閲覧者にとって重要度が低いと私は思っています。 Main Index や Individual Entry Archive に配置する必要があるのか ? 自分が把握できればいいのでは ? といった考えから作りました。
作りましたというか、 wu-tang ( BAZOOKA ) が Junkline - Reacent Reaction Index みたいな事をやりたい、と言っており、その流れでテンプレートの記述方法を教えることになったので、見返しやすいようにまとめ直したといった方がいいかもしれません。 もしくは今後同様の質問があった時に「ここを見てくれ」で済ませることができるように。
元々 Junkline - Reacent Reaction Index のようなテンプレートは自分でも作っていたので、新たに作ったわけではありません。 ……アサノさん ( Junkline ) から習ったのか、私がアサノさんに教えたのか、記憶が曖昧になっているのに気付きました。 どっちでしたっけ ? どうもたまたま同じようなテンプレートをお互いに作っていたというのが真相みたいです。
必須プラグイン
このプラグインを入れないと、「自分の weblog のどの記事にトラックバックが送られたのか」が分かりません。 プラグインを入れないまま Recent Reaction template を導入してしまうと、リビルド時にはエラーが起こりませんが、トラックバックを受信した時に トラックバックが送信された記事を表示するようにカスタマイズ - MTPingedEntry Plugin をインストールしなかった場合で説明しているようなエラーが発生します。
テンプレートの作成手順
-
テンプレートをクリックします。
-
新しいインデックス・テンプレートを作るをクリックします。
-
テンプレートの名前を Recent Reaction template にし、出力ファイル名を recent_reaction.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</title>
</head>
<body>
<h1><$MTBlogName$> - Recent Reaction</h1>
<h2>Recent Commnets</h2>
<dl>
<MTEntries recently_commented_on="1000">
<dt><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></dt>
<dd>
<ul>
<MTComments>
<li><a href="<MTCommentEntry><$MTEntryPermalink$></MTCommentEntry>#c<$MTCommentID$>"><$MTCommentDate format="%Y/%m/%d %H:%M"$> : <$MTCommentAuthor$></a></li>
</MTComments>
</ul>
</dd>
</MTEntries>
</dl>
<h2>Recent Trackbacks</h2>
<dl>
<MTPings lastn="1000">
<dt><MTPingedEntry><a href="<$MTPingedEntryLink$>"><$MTPingedEntryTitle$></MTPingedEntry></a></dt>
<dd>
<ul>
<li><a href="<$MTPingURL$>"><$MTPingDate format="%Y/%m/%d %H:%M"$> : <$MTPingBlogName$> - <$MTPingTitle$></a></li>
</ul>
</dd>
</MTPings>
</dl>
<p>
Powered by <a href="http://www.movabletype.org">Movable Type <$MTVersion$></a>
</p>
</body>
</html>
サンプル
これは hxxk.jp のテンプレートとして作成していますので、 hxxk.jp にコメントやトラックバックが寄せられることにより、随時更新されます。
正式採用のテンプレートが決定したため、自動での再構築はしないように変更しました。
必ずしも最新のコメントが反映されているとは限りません。
また、このサンプル以外にも、 Junkline - Reacent Reaction Index やリアクションなどで活用事例を見ることができます。
Recent Comments の解説
Recent Reaction の Recent Commnets の欄を見ればお分かりになると思いますが、記事ごとに投稿されたコメントをまとめて、かつコメント投稿日時が最も新しいものを子に持つ記事が一番上に来るようになっています。 これは <MTEntries> タグの属性として recently_commented_on を指定することで実現しています。
サンプルではこの値に 1000 を指定していますが、これはコメントが投稿された記事を最大 1000 件表示し、コメントの投稿日時がより新しいものを子に持つものを順に並べるという結果を得ることができます。
Recent Trackbacks の解説
Recent Reaction の Recent Trackbacks の欄を見ればお分かりになると思いますが、 Recent Comments と違い、記事ごとにトラックバックをまとめていません。 これは単純に recently_commented_on にあたるような属性が定義されていないことによります。
よって、サンプルでは <MTEntries> タグを使わずに、 <MTPings> の lastn 属性に 1000 を指定しています。 これは、トラックバックが送信された日時順に記事を最大 1000 件表示し、どの記事にトラックバックが送られたのか、トラックバックの送信元がどこなのか、といった情報を合わせて表示するという結果を得ることができます。
活用例
- 独立したテンプレートとして使用するのでなく、ソースの一部分を各種テンプレートに組み込み
- たとえば、 dl 要素部分だけ書いておいて、 PHP で include すると、全部のテンプレートに容易に埋め込むことができると思います。 ( 全部のテンプレートに埋め込む必要があるかどうかはさておき )
- Recent Comments の方は、うまく改造すればスレッドフロート型掲示板もどき ( スレッドを立てる権限は weblog の投稿者に限定されますが ) を作ることもできます。

