Movatterモバイル変換


[0]ホーム

URL:


Open MagicVox.netOpen MagicVox.net

ヘッダメニュー


 この記事の内容は、時間経過およびプログラムやシステムのバージョン アップなどの事情によって、現状に正しくそぐわない内容、またはそれどころか、場合によっては問題を引き起こす可能性があります。参考程度に留め、関連記事アーカイブを検索してみてください。

MovableType のコメントでツリー型掲示板を実現するプラグイン:MTCommentTree

Permalink URL
http://www.magicvox.net/archive/2005/08040004/
Posted by
ぴろり
Postedat
2005/08/04 00:04
Trackbacks
関連記事(4)
Comments
コメント(31)
Post Comment
コメントできます
Category
プラグイン カテゴリ
 MovableType には標準でコメントを投稿できる機能がありますが、投稿されたコメントは時系列に沿って表示することしかできません。時系列に並んだコメントの中から目的の話題のみを追いかけることは、コメント欄での議論が白熱した場合などそう容易なことではありません。一方、記事に親子関係を持つツリー(スレッド)形式の掲示板では、複数の話題を扱っていても関連する記事だけを簡単に追いかけることができます。論評系のブログなどで、ツリー形式のコメント欄が欲しいと思われた方もいらっしゃるのではないでしょうか?

 そこで今回、MovableType のコメント欄をツリー形式で表示できるプラグインを作成してみました。このプラグインは、コメントをツリー形式で表示するための幾つかのテンプレートタグを追加します。これによりコメントに親子関係を持たせた、ツリー型掲示板のような表示が可能になります。

このエントリーをはてなブックマークに追加 

目次

  1. ダウンロード

はじめに

MTCommentTree.jpg このプラグインを導入することで、右図のようにコメントをツリー形式で表示することができます。記事の親子関係はコメント入力欄にある URL フィールドを利用して管理しているため、既に URL フィールドをお使いの場合、これをそのままにプラグインを導入することはできません。申し訳ありませんが、ツリー表示を取るか、URL 入力欄を取るかの二者択一となっています m(_^_)m

 "オンラインソフトの発表の場としてのウェブログ"という記事で、オンラインソフトをブログを使って公開する場合の方法について書いています。ここで、ユーザとのコミュニケーションツールであるコメント欄について述べた部分がありますが、その中で従来の時系列コメントについて少しコメントをしています。機能要望やバグ報告などが盛んに行われるようになると、時系列コメントでは複数の話題を効率よく追うことが難しくなり、そのためにもツリー型掲示板に近い機能が欲しくなってきます。

 Web を検索したところ、最近に投稿されたコメントをツリー化するための改造については幾つか発見することができましたが、個別アーカイブのコメントをツリー化できるものは残念ながら発見できませんでした。
 Lunar's 「本日の○○」:『カストマイズ』では、MovableType の標準テンプレートを使って、最近に投稿されたコメントをツリー表示とするための改造が紹介されています。Web で検索できた改造のほとんどはこれと同じものでした。
 また、小粋空間:サイドメニューのツリー化スクリプト(改)では、JavaScript を利用してツリー表示を実現する手法が紹介されています。ここで公開されてる maketree.js は、コメントに限らずトラックバックやカテゴリなど様々に使うことができ、サブカテゴリーも再帰的に展開してくれるスグレモノです。しかし今回、目指しているツリー型掲示板に一番近いものの、このままではコメントの親子関係を実現できそうにありません。

 当初、maketree.js を参考に色々弄ってみましたが、コメント毎に親子関係の情報を持たねばならず、MovableType 標準では実現できそうにないという結論に至りました。MovableType には簡単に機能拡張が行えるプラグインという仕組みがあり、そこで今回、コメント欄でツリー型掲示板を実現できるようなプラグインを自作することにしました。

結局、自作することになったプラグインは全く簡単ではありませんでしたが!

今のところ、どのエントリのコメント欄も平和なもので、このツリー型コメントが効果を発揮するのはまだまだ先のことになりそうです。しょんぼり。


追加されるテンプレートタグ

MTCommentTree
コメントツリーのコンテナタグです。MovableType 標準のMTComments タグの替わりに使います。この中では MovableType 標準のMTComment* タグに加えて、以下のタグを使うことができます。
MTCommentHasChild
自分を親とする子が少なくとも一つある場合に真になる条件タグです。
MTCommentHasNoChild
自分を親とする子が一つもない場合に真になる条件タグです。
MTCommentIsRoot
自分がルートコメントの場合に真になる条件タグです。
MTCommentChildRecurse
自分の子について、MTCommentTree で定義されているテンプレートを再帰的に呼び出します。

導入方法

Step 0.プラグインのインストール

 アーカイブに含まれるMTCommentTree.pl を MovableType のプラグインディレクトリにコピーします。そして、MovableType の管理画面のメインメニューで、"使用可能なプラグイン"欄に表示されていることを確認します。

Step 1.個別アーカイブテンプレートの修正

 MTComments テンプレートタグをMTCommentTree に修正し、コメントが子を持つ場合についてMTCommentHasChild タグを用いて記述します。
<MTCommentTree><$MTCommentAuthor$>:<$MTCommentDate$><br /><$MTCommentBody$><MTCommentHasChild><div><$MTCommentChildRecurse$></div></MTCommentHasChild></MTCommentTree>

Step 2-1.コメント入力フォームに url の hidden フィールドを追加

 記事の親子関係はコメント入力欄にある URL フィールドを利用して管理しています。URL フィールドは hidden 要素としておきます。Cookie で url フィールドを自動設定している箇所があるので、こちらも忘れずに削除しておきましょう。
<input type="hidden" name="url" value="">

Step 2-2.各コメント毎に返信用のリンクを追加

 特定の記事に返信を返すと、返信はその記事の子として表示されます。記事に返信するには、その記事のコメントIDを URL フィールドに入力しますが、ここで紹介している例では JavaScript を利用して URL フィールドを設定しています。
<!--MTCommenTree タグ中で、各コメントに返信用リンクを追加します--><a href="#" onclick="#""><script type="text/javascript" language="javascript">function writeReply (id){document.commentform.url.value = id;}</script>

 これで、コメント毎に用意された"返信する"リンクをクリックした後にコメントを投稿すると、投稿されたコメントは親子関係として表示されることになります。

親に指定されているコメントにアイコンを表示するなど、改善の余地はまだまだありそうです。このままでは、返信リンクをクリックしても画面に変化が無いので、意図しないコメントにレスを返してしまうなどの事故があります。

デフォルトでは、ルート(親を持たない状態)にコメントが投稿されます。

トラブルシュート - 動かない時は?

 私がプラグインを作り始めた頃のモノなので、とんでもない不具合が隠されている可能性が高いです。作者に直接連絡を頂けた方が早く対処できるかもしれません(いいのかそれで)

いろいろ

  • 管理画面からコメントの親子関係を解消するには、子コメントの URL を空欄にしてください
  • MovableType のプラグイン開発は今回が初挑戦でして、未だにその仕組みが理解できていません
  • ひとまず、コメントの親子関係を実現できるところまでは漕ぎ着けましたが、他にも必要なタグやバグ報告などありましたらツッコミのほど宜しくお願い致します
  • オリジナルの著作権表示を改変しない限り、自由に改造・転載・配布できます

ダウンロード

このエントリーをはてなブックマークに追加 


この記事を読んだ人はこんな記事も読んでいます記事リコメンデーションについて

カバー画像:MovableType で自由にトピック立てできる掲示板を作る:MTBBS

この記事のアーカイブ

全ての記事 »
2005年
全てのカテゴリ »
MovableType »プラグイン
全てのタグ »
,,,
キーワード検索 »
,,,

関連記事/トラックバック(全 4 件中、最新 5 件まで表示しています)

Open MagicVox.net のスクリーンショット
タイトル
MovableTypeで掲示板を作る
Trackbacked at
2006/05/17 23:48
from
Open MagicVox.net
概要
 MovableType で本サイトとは別のブログにエントリを一つ作り、 そのエントリのコメント欄を掲示板や一言 BBSとして利用する方法が広く使われているよう...

Open MagicVox.net のスクリーンショット
タイトル
MTCommentTreeプラグインとJavaScript
Trackbacked at
2006/04/17 20:41
from
Open MagicVox.net
概要
 MovableType のコメント欄でツリー掲示板を実現するプラグイン MTCommentTree は、MovableType のテンプレートタグを拡張するだ...

FOX通信 のスクリーンショット
タイトル
コメントをツリー式にするプラグイン、ようやく導入
Trackbacked at
2006/04/14 00:22
from
FOX通信
概要
去年の8月にこんなエントリを書きました。 コメントをツリー形式にするプラグイン発見 それから8ヶ月、ようやくプラグインを導入して、使えるようにしてみました。 ...

FOX通信 のスクリーンショット
タイトル
コメントをツリー形式にするプラグイン発見
Trackbacked at
2005/08/19 13:25
from
FOX通信
概要
mixiのMTコミュで見つけたプラグイン。 コメント欄をツリー型掲示板みたいにしてくれるらしいです。 Open MagicVox - MovableType の...

この記事にトラックバックを送るには?

トラックバックURL:

トラックバックスパム対策のため,上記の URL 末尾にあるXXXXXXCAPTCHA コード?に置き換えてからご利用ください。お手数ですがご協力のほど宜しくお願いいたします。

寄せられたコメント(全 31 件中、最新 5 件まで表示しています)

寄せられたコメント

#
1
Posted by
ぴろりぴろり
at
2005/08/07 19:03
ID
hWdHnspA
Replay
+ 返信する
エントリを個別に保存している分には正常に動作しているようですが、
個別アーカイブを全部再構築するとワーニングが出ますね(汗
警告が出るだけでエントリ自体は再構築されているようです。
コードを弄ってみたものの解決に至っていません(´・ω・`)ショボーン
#
2
Posted by
ぴろりぴろり
at
2005/08/17 11:18
ID
LlSkyx.6
Replay
+ 返信する
>>1 バージョン0.11で修正しました
#
4
Posted by
tomotomo
at
2006/02/18 15:16
ID
L9Z/fWTI
Replay
+ 返信する

ぴろり への返信:

どうもこんにちは。
再構築の際にエラーが出るのですが、
Use of uninitialized value in pattern match (m//) at /usr/local/apache/htdocs/mt/plugins/MTCommentTree.pl line 103.
Use of uninitialized value in pattern match (m//) at /usr/local/apache/htdocs/mt/plugins/MTCommentTree.pl line 57.
Use of uninitialized value in pattern match (m//) at /usr/local/apache/htdocs/mt/plugins/MTCommentTree.pl line 103.
Use of uninitialized value in pattern match (m//) at /usr/local/apache/htdocs/mt/plugins/MTCommentTree.pl line 57.
これは無視して構わないものなのでしょうか?
#
5
Posted by
ぴろりぴろり
at
2006/02/18 22:32
ID
43El6VM6
Replay
+ 返信する

tomo への返信:

報告ありがとうございました。
ver.0.11 で残っていた(恥ずかしい)修正漏れを修正しました。
ver.0.12 として公開しましたのでご利用ください。
報告頂いたものは警告(≠エラー)メッセージですので、動作はしていると思われます。
お手数をおかけしました。
#
6
Posted by
tomotomo
at
2006/02/19 03:07
ID
glHG3KHY
Replay
+ 返信する

ぴろり への返信:

>>お手数をおかけしました。
とんでもないです(^_^;
素晴らしいプラグインをありがとうございます!
#
7
Posted by
tomotomo
at
2006/02/19 05:12
ID
glHG3KHY
Replay
+ 返信する

ぴろり への返信:

たびたびすみません。
クッキー情報も除去したつもりなのですが、何故か名前欄に
コメントへのリンクが入ってしまいます。
いろいろ調べたのですが、自分の力ではちょっと無理でした・・・。
ちなみに、こんな感じです↓
http://blog.toiz.jp/fuyu_t/top/archives/2006/02/_vs_1.html#121
cricketという名前欄です。
#
10
Posted by
tomotomo
at
2006/02/19 06:12
ID
glHG3KHY
Replay
+ 返信する

tomo への返信:

自己レスです。
MTCommentAuthorLinkのURLが使えないの忘れてました(^_^;
show_url="0"で解決しました。
#
8
Posted by
tomotomo
at
2006/02/19 05:25
ID
glHG3KHY
Replay
+ 返信する

ぴろり への返信:

さらにたびたびすみません(^_^;
投稿日付が親記事の日付になっています。
トップページなどで<$MTEntryDate$>として拾うとちゃんと
表示されるので、
<$MTCommentChildDate$>
あたりが欲しいです・・・。
#
9
Posted by
tomotomo
at
2006/02/19 05:28
ID
glHG3KHY
Replay
+ 返信する

tomo への返信:

自己レスです。タグが消えちゃいました。
<$MTCommentDate$>として拾うとちゃんと
表示されるので、
<$MTChieldCommentDate$>
あたりが欲しいです・・・。
スレッド汚して済みませんm(__)m
#
11
Posted by
ぴろりぴろり
at
2006/02/19 12:08
ID
dWzZnl7A
Replay
+ 返信する

tomo への返信:

こちらこそ!
>> 投稿日付が親記事の日付になっています。
今まで使っていながら何故気が付かなかったんでしょう…orz
ver.0.13 で子コメントの日付も正しく表示できるように修正しました。
親子コメント関係なく従来のタグ<$MTCommentDate$>をご利用ください。
#
12
Posted by
tomotomo
at
2006/02/19 13:19
ID
glHG3KHY
Replay
+ 返信する

ぴろり への返信:

対応早ッ!完璧です!
ありがとうございます!m(__)m
重ねて恐縮ですが、本当に良いプラグインをいただきました。
変な言い回しですが、大事に使わせていただきます。
#
3
Posted by
IranaIrana
at
2005/08/19 18:04
ID
iQ78KNgA
Replay
+ 返信する
mixiでこのプラグインを見つけて、便利そうだったのでトラバさせていただきました。
まだ仕事中(をい)なためインストールして無いんですけど、
試したらこちらに報告上げさせていただきますね。
#
13
Posted by
tomotomo
at
2006/02/19 23:38
ID
glHG3KHY
Replay
+ 返信する
ぴろりさん質問ばかりですみません。
<MTCommentIsRoot>
(親記事.gifを貼ります)【投稿者】 
<MTElse>
 └【返信者】 
</MTElse>
</MTCommentIsRoot>
のように分岐文を作ったのですが、全く作用してくれません・・・。
ルートというのは大元の親記事ということで解釈してよろしいんですよね?
#
17
Posted by
ぴろりぴろり
at
2006/02/20 02:16
ID
oWwUc2Q6
Replay
+ 返信する

tomo への返信:

ご指摘ありがとうございました。
ver.0.14 として修正版を公開しましたのでご利用ください。
本当に何度も修正を繰返すこと、申し訳ない気持ちで一杯です。
これまた何故今まで気が付かずに放置されていたのか自分でもわかりません。
バグコードを見た瞬間目が点になりました(´д`;)ヒィィ
ここに来て改めてプラグインのコード全体を読み直してみると
"初めて作ったプラグイン"という触れ込み(?)に間違いはなかったようです。
半年前の処女作は、まさに秘境そのものでした…!!
#
19
Posted by
tomotomo
at
2006/02/20 03:07
ID
1vXPDJqk
Replay
+ 返信する

ぴろり への返信:

修正版早速ありがとうございます。
なんか、クレクレ君みたいな自分がいますが(^_^;)
>>半年前の処女作は、まさに秘境そのものでした…!!
このフレーズなんかいやらしくて好きです 笑
ちなみにツリー式は大好評です。
なんでもいいので書き込んで行ってくださいm(__)m
#
18
Posted by
ぴろりぴろり
at
2006/02/20 02:20
ID
oWwUc2Q6
Replay
+ 返信する

tomo への返信:

MTCommentHasChild、MTCommentHasNoChild、MTCommentIsRoot の偽条件には
tomo さんのコードのように MTElse を使用することができます。
MTCommentHasChild と MTCommentHasNoChild は似たような動作で、
いずれも MTElse で他方を代用できますが、
それぞれの真条件の検索が(ビミョーに)高速という点があります。
ご利用くださいm(_ _)m
#
14
Posted by
tomotomo
at
2006/02/19 23:52
ID
glHG3KHY
Replay
+ 返信する
ちなみに・・・
<MTCommentHasChild>
 <$MTCommentAuthor$>さんへの返信コメントがあります。
<MTElse>
 このコメントへ返信できます。
</MTElse>
はバッチリ作用しています。
#
15
Posted by
tomotomo
at
2006/02/19 23:54
ID
glHG3KHY
Replay
+ 返信する

tomo への返信:

</MTCommentHasChild>
コピぺし忘れてました。
#
16
Posted by
tomotomo
at
2006/02/19 23:58
ID
glHG3KHY
Replay
+ 返信する
あ、親記事ではなく親コメントですね・・・
こんなんばっかですみません(^_^;)
#
20
Posted by
tomotomo
at
2006/02/20 17:38
ID
1vXPDJqk
Replay
+ 返信する
管理者:
すみません! こちらの操作ミスでコメント本文が消えてしまいました!
以下の内容は私のうろ覚えですが、tomo さんから頂いたコメントの内容です;
---
MT4i を使用して携帯電話から投稿したコメントが見えないという不具合がある
  1. MT4i を経由して投稿したコメントは、MT4i ですぐに確認できる
  2. しかしその状態で PC 用のサイトを見るとコメントが反映されていない
  3. 管理画面から確認するとコメントは承認されている
  4. 管理画面からコメントを保存し直すと PC 用サイトにも反映される
  5. 他にも 6 つのブログで同様の現象が発生している
#
24
Posted by
tomotomo
at
2006/02/21 01:47
ID
u4G3uIUE
Replay
+ 返信する

tomo への返信:

5.の他の6つの・・・の部分ですが、
正確には6つのブログのうち、MTCommentTreeコンテナタグもしくは
MTCommentChildRecurseタグを使用しているひとつのブログだけに起きている現象です。
ちなみに、MT標準のMTCommentsコンテナタグでは起きないようです。
あれからまたいろいろ検証を重ねたのですが、
今現在、
http://blog.toiz.jp/fuyu_t/top/archives/2006/02/_vs_1.php#come
こちらにMTCommentHasChildなどを使ってリストアップしてますが、全く問題ありません。
ちなみに、MTCommentsを使って囲ってます。
さらに、携帯から今度はMT4iを使わずに直接ブログ投稿してみました。
すると今度はリストにも載りますし、投稿も反映されるのです。
まとめると、
1.携帯からMT4iを介さない投稿はMTCommentTreeコンテナを使用しても問題ない。
2.MT4iより投稿されたものはMTCommentTreeコンテナを使用すると表示されない。
3.MT4iより投稿されたものはMTCommentsのMT標準コンテナを使用すると表示される。
となります。(やや、ややこしいですが・・・)
長々とすみません。m(__)m
#
21
Posted by
tomotomo
at
2006/02/20 17:43
ID
1vXPDJqk
Replay
+ 返信する
ちなみに、こういう現象です。
●PC版(名“テスト”が携帯による投稿)
http://blog.toiz.jp/fuyu_t/top/archives/2006/02/_vs_1.php
MTCommentTree コンテナタグを使用しています。
●携帯版(     〃     )PCからも見られます。
http://toiz.jp/mt/index.cgi?id=5
タグはMT4iデフォルトのタグです。
#
22
Posted by
tomotomo
at
2006/02/20 17:45
ID
1vXPDJqk
Replay
+ 返信する

tomo への返信:

http://toiz.jp/mt/index.cgi?id=5&mode=comment&no=1&eid=128
あ、携帯版はこっちです。(^_^;)
#
23
Posted by
ぴろりぴろり
at
2006/02/21 01:29
ID
9uZy6/Wo
Replay
+ 返信する
確認しました。
ver.0.15 として修正版を公開しましたのでご利用ください。
指摘頂いた MT4i での不具合の他にも
MTCommentTree 導入以前に投稿されたコメントが表示されないと言った不具合も解消されているハズです。
ご迷惑をおかけしましたm(_ _;)m
#
25
Posted by
tomotomo
at
2006/02/21 01:52
ID
u4G3uIUE
Replay
+ 返信する

ぴろり への返信:

投稿時間がカブっちゃいましたね(^_^;)
手早く解決していただき、本当に感動ものです。
本当に使わせて頂いて良かったと感じます!
ですので、全然迷惑なんかじゃありません。
謝らないでください(^_^;)
貴重な時間を割いていただき、夜中まで本当にありがとうございました。
m(__)m
#
26
Posted by
IranaIrana
at
2006/04/14 00:16
ID
PZ4GVoVc
Replay
+ 返信する
以前こちらのプラグインを自分のブログで紹介させていただいた後、
今回ようやく導入することができました。
(そのため、再トラバさせていただきました。ご不快でしたら、お手数ですが削除をお願いします)
なんとか動作確認まではできております。
そこで、一つお願いがあります。
ぴろりさんのサイトで使用されているタグを、
もう少し詳しく公開していただけないでしょうか?
 #特に返信の取り消しのjavascriptあたりが知りたいです
申し訳ありませんが、よろしくお願い致します。
#
27
Posted by
ぴろりぴろり
at
2006/04/17 20:44
ID
7zK65Z56
Replay
+ 返信する

Irana への返信:

> ぴろりさんのサイトで使用されているタグを、
> もう少し詳しく公開していただけないでしょうか?
> #特に返信の取り消しのjavascriptあたりが知りたいです
リクエストにお応えして(?)説明記事を書いてみました。参考になれば良いのですが。
http://www.magicvox.net/archive/2006/04172001.php
#
28
Posted by
ふ〜ふ〜
at
2006/06/06 11:29
ID
W6YATRCY
Replay
+ 返信する
仕事でムーバブルタイプを導入、さらに掲示板も作ることになりました。
でもMTにはBBSやツリー機能がないことがわかり、どうしようかと悩んでおりました。
必死にググっていると、このサイトが見つかりました。
まだこれから導入するところですが、かなり使えそうです。ありがとうございます。
#
29
Posted by
takataka
at
2006/08/02 02:52
ID
DP8wFjGU
Replay
+ 返信する
mt3.2で使ったらうまくいかず、スクリプトのcommentformをcomments_formに書き換えることに気づくまで苦労しました。
とてもべんりです。ありがとうございました。
ひとつ教えて欲しいのですが、インデックスページなどで、最新一つのルートコメントのみを表示させたいのです。
<MTCommentTree lanten="1">は使えないようですが、何かいい方法がないでしょうか?
#
30
Posted by
takataka
at
2006/08/02 14:33
ID
DP8wFjGU
Replay
+ 返信する

taka への返信:

すいません、自己レスです。タグが消えちゃいました。
「lantenは使えないようですが、何かいい方法がないでしょうか?」でした。
#
31
Posted by
tomozotomozo
at
2024/01/22 15:50
ID
9ik3.amI
Replay
+ 返信する
MTCommentTreeを使ってみたいのですが、ダウンロードができないようです。

コメントを投稿する

 
 (必須, 匿名可, 公開,トリップが使えます)
 (必須, 匿名可, 非公開,Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄にランダムな数字CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。
 

Reference

プロフィール

ツール

  • このサイトのフィード
    RSS 1.0
  • この記事のコミュニケーションフィード
    RSS 1.0

entry:151管理

関連する商品



ナビゲーション

最近の人気記事 これは何?

  1. ぬるぬるローションの製作(703 hits)
  2. Windows PC で Wii リモコンを使う(220 hits)
  3. ぬるぬるローションの製作 その2(190 hits)
  4. Mozilla Thunderbird おすすめアドオン 17 個+α(185 hits)
  5. PIC ことはじめ ~ 7 セグメント LED を使う(183 hits)

いいね!ランキング これは何?

  1. Open Graph Protocol 付きで「いいね!」ボタンを設置する(22 pts)
  2. 【試験公開】「いいね!」ランキングを作る(10 pts)
  3. Mac OS X のフォントを Chicago っぽくする(8 pts)
  4. MovableType で外部の RSS などを取得・整形して表示する(7 pts)
  5. Mozilla Thunderbird おすすめアドオン 17 個+α(5 pts)

最近のコメント/関連記事

記事検索

全ての記事 ...


フッタメニュー

Copyright © 2004-2021Open MagicVox.net. Some rights reserved underCreative Commons License.
Written in Japanese (UTF-8). Japanese fonts are required to view this page.
Generated withMovable Type UC 5.13.367
Total Visits:Total Visits / Today:Today / Yesterday:Yesterday

[8]ページ先頭

©2009-2025 Movatter.jp