この記事の内容は、時間経過およびプログラムやシステムのバージョン アップなどの事情によって、現状に正しくそぐわない内容、またはそれどころか、場合によっては問題を引き起こす可能性があります。参考程度に留め、関連記事やアーカイブを検索してみてください。
そこで今回、MovableType のコメント欄をツリー形式で表示できるプラグインを作成してみました。 このプラグインは、コメントをツリー形式で表示するための幾つかのテンプレートタグを追加します。 これによりコメントに親子関係を持たせた、ツリー型掲示板のような表示が可能になります。
"オンラインソフトの発表の場としてのウェブログ"という記事で、 オンラインソフトをブログを使って公開する場合の方法について書いています。 ここで、ユーザとのコミュニケーションツールであるコメント欄について述べた部分がありますが、 その中で従来の時系列コメントについて少しコメントをしています。 機能要望やバグ報告などが盛んに行われるようになると、 時系列コメントでは複数の話題を効率よく追うことが難しくなり、 そのためにもツリー型掲示板に近い機能が欲しくなってきます。
Web を検索したところ、最近に投稿されたコメントをツリー化するための改造については幾つか発見することができましたが、
個別アーカイブのコメントをツリー化できるものは残念ながら発見できませんでした。
Lunar's 「本日の○○」:『カストマイズ』
では、MovableType の標準テンプレートを使って、最近に投稿されたコメントをツリー表示とするための改造が紹介されています。
Web で検索できた改造のほとんどはこれと同じものでした。
また、小粋空間:サイドメニューのツリー化スクリプト(改)
では、JavaScript を利用してツリー表示を実現する手法が紹介されています。
ここで公開されてる maketree.js は、コメントに限らずトラックバックやカテゴリなど様々に使うことができ、
サブカテゴリーも再帰的に展開してくれるスグレモノです。
しかし今回、目指しているツリー型掲示板に一番近いものの、このままではコメントの親子関係を実現できそうにありません。
当初、maketree.js を参考に色々弄ってみましたが、コメント毎に親子関係の情報を持たねばならず、 MovableType 標準では実現できそうにないという結論に至りました。 MovableType には簡単に機能拡張が行えるプラグインという仕組みがあり、 そこで今回、コメント欄でツリー型掲示板を実現できるようなプラグインを自作することにしました。
結局、自作することになったプラグインは全く簡単ではありませんでしたが!
今のところ、どのエントリのコメント欄も平和なもので、 このツリー型コメントが効果を発揮するのはまだまだ先のことになりそうです。しょんぼり。
MTCommentTree
MTComments
タグの替わりに使います。
この中では MovableType 標準の MTComment*
タグに加えて、
以下のタグを使うことができます。
MTCommentHasChild
MTCommentHasNoChild
MTCommentIsRoot
MTCommentChildRecurse
MTCommentTree
で定義されているテンプレートを再帰的に呼び出します。
MTComments
テンプレートタグを MTCommentTree
に修正し、
コメントが子を持つ場合について MTCommentHasChild
タグを用いて記述します。
<MTCommentTree> <$MTCommentAuthor$>:<$MTCommentDate$><br /> <$MTCommentBody$> <MTCommentHasChild> <div> <$MTCommentChildRecurse$> </div> </MTCommentHasChild> </MTCommentTree>
<input type="hidden" name="url" value="">
<!--MTCommenTree タグ中で、各コメントに返信用リンクを追加します--> <a href="#" onclick="javascript: writeReply (<$MTCommentID$>);">返信する</a>
<script type="text/javascript" language="javascript"> function writeReply (id) { document.commentform.url.value = id; } </script>
これで、コメント毎に用意された"返信する"リンクをクリックした後にコメントを投稿すると、 投稿されたコメントは親子関係として表示されることになります。
親に指定されているコメントにアイコンを表示するなど、改善の余地はまだまだありそうです。 このままでは、返信リンクをクリックしても画面に変化が無いので、 意図しないコメントにレスを返してしまうなどの事故があります。
デフォルトでは、ルート(親を持たない状態)にコメントが投稿されます。
master
) ... バグ修正や機能追加など開発途中のバージョンです。開発中の新機能などをいち早く利用できますが、新しいバグが生まれていたり、テストが不十分な場合があります。
寄せられたコメント (全 31 件中、最新 5 件まで表示しています)
「lantenは使えないようですが、何かいい方法がないでしょうか?」でした。
とてもべんりです。ありがとうございました。
ひとつ教えて欲しいのですが、インデックスページなどで、最新一つのルートコメントのみを表示させたいのです。
<MTCommentTree lanten="1">は使えないようですが、何かいい方法がないでしょうか?
でもMTにはBBSやツリー機能がないことがわかり、どうしようかと悩んでおりました。
必死にググっていると、このサイトが見つかりました。
まだこれから導入するところですが、かなり使えそうです。ありがとうございます。
> もう少し詳しく公開していただけないでしょうか?
> #特に返信の取り消しのjavascriptあたりが知りたいです
リクエストにお応えして(?)説明記事を書いてみました。参考になれば良いのですが。
http://www.magicvox.net/archive/2006/04172001.php