記事本文
Recent Reaction template ( with SimpleComments ) の概要
Recent Reaction template にて公開しているテンプレートに、プラグインを用いてよりシンプルな設計に変更したものです。 Recent Reaction template は、 Recent Comments と Recent Trackbacks をそれぞれまとめていましたが、 SimpleComments というプラグインを使うことでコメントもトラックバックも同列にまとめようというものです。
Re: Hot Topics みたいなもの
ちむわんの、真琴さんが丁寧にEntryにしてくれたアレも良いのですが、どうしてもトラックバックとコメントで分かれてしまう。 今回はとにかく単純なものにしたかったので、トラックバックでもコメントでもとにかく最近何かあった順にまずEntryが並ぶ。 んで、それぞれのEntryの中でもトラックバックとコメントが一緒くたになってとにかく新しい順に並ぶ。 一長一短だと思うけど、こういうのもアリじゃないでしょうか。
ray さん ( SG::Acme ) がこう仰られて、 SQL で直接データベースから取り出して (?) 並べる方法を提示されています。
ray さんが
トラックバックでもコメントでもとにかく
と仰っていることを実現するプラグインが確かあったなーと思ったので、実現できるかどうか試してみようと思いました。
必須プラグイン
TrackBacks are comments. They are comments left on someone else’s site rather than your own, but they are comments nonetheless. Movable Type makes a distinction between entry comments and TrackBacks that seems artificial, and it made more sense to me to have TrackBack ping data appear within the comments portion of a Movable Type site.
このプラグインは、 「トラックバックもコメントの一種。 そのコメント文はあなたの記事内ではなくて誰かのサイトに書かれたものであるけれど、コメントであることには変わりは無い。 Movable Type がコメントとトラックバックを分けているのは不自然で、私はトラックバック ping をコメント欄に表示させる方が意味があると思う。」 といった思いから作られたもので、コメントもトラックバックも同じ欄に表示することを実現できるようになっています。 ( なお、私のこの訳はかなり適当です。 原文を読む方をお勧めします。 )
なお、 MTPingedEntry については Recent Reaction template - 必須プラグインで解説しています。
テンプレートの作成手順
-
テンプレートをクリックします。
-
新しいインデックス・テンプレートを作るをクリックします。
-
テンプレートの名前を Recent Reaction template ( with SimpleComments ) にし、出力ファイル名を recent_reaction_with_simplecomments.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 ( with SimpleComments )</title>
</head>
<body>
<h1><$MTBlogName$> - Recent Reaction ( with SimpleComments )</h1>
<ul>
<MTSimpleComments sort_order="descend">
<MTSimpleCommentIfComment>
<li><MTSimpleCommentEntry><a href="<MTSimpleCommentEntry><$MTEntryPermalink$></MTSimpleCommentEntry>#c<$MTCommentID$>">Comment No.<$MTCommentID$> - <$MTEntryTitle$></a> by <$MTCommentAuthor$></MTSimpleCommentEntry></li>
</MTSimpleCommentIfComment>
<MTSimpleCommentIfTrackback>
<li><MTPingedEntry><a href="<$MTPingedEntryLink$>#p<$MTPingID$>">Trackback No.<$MTPingID$> - <$MTPingedEntryTitle$></a> by <a href="<$MTPingURL$>"><$MTPingBlogName$> - <$MTPingTitle$></a></MTPingedEntry></li>
</MTSimpleCommentIfTrackback>
</MTSimpleComments>
</ul>
<p>
Powered by <a href="http://www.movabletype.org">Movable Type <$MTVersion$></a>
</p>
</body>
</html>
サンプル
これは hxxk.jp のテンプレートとして作成していますので、 hxxk.jp にコメントやトラックバックが寄せられることにより、随時更新されます。
正式採用のテンプレートが決定したため、自動での再構築はしないように変更しました。
必ずしも最新のコメントが反映されているとは限りません。
解説
テンプレートを何度も修正してみましたが、納得のいくものは出来ませんでした。 理想は ray さんの SG::Acme : Hot Topics と同じものをプラグインのみで実現することだったのですが……。 条件式テンプレートタグの入れ子で AND 条件を実現することはできますが、 OR 条件を実現することができませんでした。 逆に言うとその辺りをクリアするようなプラグインを自作すれば良いのかもしれません。
サンプルは、コメントの投稿ないしトラックバックの送信が行われた場合に、最新のものから順に並べるという結果を得ることができます。 同じ記事にいくつもコメントやトラックバックが寄せられた場合でも、記事ごとにまとめるということはこのテンプレートではできません。
活用例
- Recent Comments と Recent Trackbacks を別にせず、一項目として表示したい場合に
- コメントやトラックバックに対するレスの管理に

