Recent Reaction template ( with SimpleComments )

http://hxxk.jp/2004/12/05/0005

記事データ

投稿者

望月真琴

投稿日時

2004-12-05T00:05+09:00

タグ
概要

Hot Topics のように、コメントもトラックバックもまとめて表示するプラグインがあったので、 SQL をいじることなくプラグインのみで実現できないものか試してみました。

リプライ

5 件のリプライがあります。

記事本文

Recent Reaction template ( with SimpleComments ) の概要

Recent Reaction template にて公開しているテンプレートに、プラグインを用いてよりシンプルな設計に変更したものです。 Recent Reaction template は、 Recent Comments と Recent Trackbacks をそれぞれまとめていましたが、 SimpleComments というプラグインを使うことでコメントもトラックバックも同列にまとめようというものです。

  1. Re: Hot Topics みたいなもの
  2. 必須プラグイン
  3. テンプレートの作成手順
  4. テンプレートの記述例
  5. サンプル
  6. 解説
  7. 活用例
  8. 関連リソース
  9. トラックバック送信先

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 - 必須プラグインで解説しています。

テンプレートの作成手順

  1. スクリーンショット テンプレートをクリックします。
  2. スクリーンショット 新しいインデックス・テンプレートを作るをクリックします。
  3. スクリーンショット テンプレートの名前を Recent Reaction template ( with SimpleComments ) にし、出力ファイル名を recent_reaction_with_simplecomments.html にしてください。 ( これらは一例です。 お好きな名前にしていただいて構いません。 また、 Movable Type の使用環境に合わせて、拡張子を適宜 .html や .shtml や .php に変更してください。 ) インデックス・テンプレートを再構築するときにこのテンプレートを自動的に再構築するにチェックを入れてください。
  4. スクリーンショット テンプレートの中身テンプレートの記述例を参考にして記述します。
  5. スクリーンショット 保存をクリックします。
  6. スクリーンショット このテンプレートを再構築するをクリックして完成。

テンプレートの記述例

最低限の要素と、該当部分だけを記述しています。 スタイルシートやナビゲーションなどは各自追加してください。

<?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 条件を実現することができませんでした。 逆に言うとその辺りをクリアするようなプラグインを自作すれば良いのかもしれません。

サンプルは、コメントの投稿ないしトラックバックの送信が行われた場合に、最新のものから順に並べるという結果を得ることができます。 同じ記事にいくつもコメントやトラックバックが寄せられた場合でも、記事ごとにまとめるということはこのテンプレートではできません。

活用例

関連リソース

トラックバック送信先

リプライ

5 件のリプライが送られています。

2004-12-05T00:45+09:00 - ray

最初、生SQLいじってたんですが、それだと自分のblogで使えないので、正規のMT::Objectのメソッドだけで作り直しましたよ。なので一応普通につかえるプラグインにはなっております。 その代わりソースが非常に泥沼っぽいですが。動けばいいだけのものなら差し上げます。 作った動機はSimpleCommentsの作者と結構似てますね。

2004-12-05T07:38+09:00 - ray

気が変わったので公開しておきました。良かったらどうぞ。

2004-12-05T18:33+09:00 - 真琴

こんにちは。 ray さんや SimpleComments の作者の方が考えていることもよく理解できますが、私は別れててもいいかなーと思っています。 で、最初に「 Hot Topics みたいなもの」を読んだときに、「プラグインとテンプレートのカスタマイズでいけそう」「 ray さんがあれこれ苦労してるっぽいのでやってみよう」と思ったのが動機なので、同じ事を再現できたらいいな、ってくらいの思いでした。 ……で、追記見たら「 10 分とかそこら」とか書いてあってびっくり。こうなったら自分なりの切り口で再現してみます ! ( 何か思いついたらしい )

2004-12-05T20:24+09:00 - ray

>10分 ほんとに10分だったかはさておき。仕事でContext.pmを弄くりまわさざるをえなかったので、こういうものをでっち上げるのはかなり早くなりました。"とりあえず作るスキル"というか。 コメントとトラックバックを同列に扱いたいというよりは、盛り上がってるエントリーを一見してわかるようにしたいというのが主題です。 そういったことを目的とするときには、分かれているのは不自然だと思いましたので。

2004-12-05T20:48+09:00 - 真琴

なるほど。確かに意見交換や議論が活発なエントリ、という視点だと一緒の方がいいですね。 ( ray さんのエントリにもそう書いてありました。 ) 前段で「自分なりの切り口で」と書いていましたが、実現できませんでした……。 ray さんが公開したものをお借りして次回 ( 次々回かも ) のエントリにつなげていこうと思います。

この記事に対するご意見やご質問、ご感想などありましたらこのフォームに簡潔に記入して下さい。 簡潔に記入できない場合や、関連記事にてご意見をお寄せいただく場合は、ご自身の weblog にて記事を書かれた上で あてにトラックバックとして送信してください。

記入フォーム

補足情報

著作、講演、制作実績など