2005年3月24日

MTCollate を使って「最近のコメント」を表示する

デフォルトテンプレートや公開テンプレートのサイドバーメニューにある「最近のコメント」は、MTEntries タグや MTComments タグ等を用いて、表示するエントリー数と各エントリーに表示するコメント数を制御しています。この方法はスタンダードながら過去のコメントが含まれてしまうケースが少なくありません。

最近のエントリー例えば、左図では各エントリーに対して最大3コメントを表示する設定にしています。この例でお分かりの通り、「記事3」のコメントには既に読み終わった古いコメントが含まれています。
また「記事2」には実は新しいコメントが他にもあるのですが、現在の設定では表示することができません。隠れている記事を読めるようにするには表示するコメント数を増やさなければなりませんが、エントリーに対してのコメント数は予測できないので本来的な作業ではありません。また表示件数を増やせば、その分既読コメントが表示される可能性が高くなります。つまり意図しない情報が画面上に表示されるという点にいおいても好ましいものではないでしょう(といっても趣味の問題ですが)。

最近のエントリーMTCollate は Google で日本語ページを検索しても80件ほどしかヒットしない、どちらかといえば陽の目をみないプラグインです。最近 MTPingEntry との併用によるトラックバックのツリー表示で活躍していますが、それ以外の用途ではほとんど利用されていないようです。
でこの MTCollate を用いれば同じ件数でも図のように最近のコメントのみが表示されるようになります。「記事2」の隠れていたコメントも現れました。逆に「コメントが少ないので賑やかにしたい」という場合も、MTCollate を利用すれば、エントリーやエントリー内のコメント件数に依存しないので、最新のコメントからn件という形で常に表示させておくことができます。

と、偉そうに書きましたが、実は Ogawa::Memoranda さんの最近のトラックバックをエントリごとにまとめて表示にあった MTCollate タグを「最近のコメント」用に修正しただけです。すいません。
以下カスタマイズ方法です。

1.MTCollate のダウンロード
MT Extensions より MTCollate をダウンロード(ページの最初の方にある「Download」をクリック)してください。

2.プラグインの配置
ダウンロードしたアーカイブを解凍して、その中の MTCollate.pl を plugins フォルダに配置またはアップロードします。

3.「最近のコメント」のMTタグを変更
公開テンプレートを例に挙げると、本カスタマイズを利用したいテンプレートに設定されている

<div class="sidetitle">
Recent Comments
</div>
 
<div class="side">
<MTEntries recently_commented_on="5">
<a href="<$MTEntryLink$>"><MTEntryTitle></a>
<br/>
<MTComments lastn="5">
└ <a href="<$MTEntryLink$>#c<$MTCommentID$>">
<MTCommentAuthor></a> <$MTCommentDate format="%m/%d"$><br />
</MTComments>
</MTEntries>
</div>

をばっさり削除して、下のタグに置き換えてください。ここでは2つのパターンを挙げておきますのでいずれかお好きな方をお選びください。3.1は貼り付けるだけ(再構築は必要)ですぐ使えます。3.2はスタイルシートで ul タグと li タグの設定が必要です。ツリー化スクリプトを利用される場合は3.2をお使いください。

3.1 br タグと "└" で表示

<MTCollateCollect>
<MTComments lastn="10">
<MTCollateRecord>
<MTCollateSetField name="comment_id"><$MTCommentID$></MTCollateSetField>
<MTCollateSetField name="comment_author"><$MTCommentAuthor encode_html="1" default="Anonymous"$></MTCollateSetField>
<MTCollateSetField name="comment_date"><$MTCommentDate format="%m/%d"$></MTCollateSetField>
<MTCommentEntry>
<MTCollateSetField name="entry_key"><MTComments lastn="1"><$MTCommentDate format="%y%m%d%H%M%S"$></MTComments></MTCollateSetField>
<MTCollateSetField name="entry_link"><$MTEntryPermalink$></MTCollateSetField>
<MTCollateSetField name="entry_title"><$MTEntryTitle encode_html="1"$></MTCollateSetField>
</MTCommentEntry>
</MTCollateRecord>
</MTComments>
</MTCollateCollect>
 
<div class="sidetitle">
Recent Comments
</div>
 
<div class="side">
<MTCollateList sort="entry_key:#:- comment_id:#:+">
<MTCollateIfHeader name="entry_key">
<a href="<$MTCollateField name="entry_link"$>" title="<$MTCollateField name="entry_title" encode_html="1"$>"><$MTCollateField name="entry_title"$></a><br /></MTCollateIfHeader>
└ <a href="<$MTCollateField name="entry_link"$>#<$MTCollateField name="comment_id"$>" encode_html="1"><$MTCollateField name="comment_author"$></a> <$MTCollateField name="comment_date"$><br />
</MTCollateList>
</div>

3.2 ul タグと li タグで表示

<MTCollateCollect>
<MTComments lastn="10">
<MTCollateRecord>
<MTCollateSetField name="comment_id"><$MTCommentID$></MTCollateSetField>
<MTCollateSetField name="comment_author"><$MTCommentAuthor encode_html="1" default="Anonymous"$> </MTCollateSetField>
<MTCollateSetField name="comment_date"><$MTCommentDate format="%m/%d"$></MTCollateSetField>
<MTCommentEntry>
<MTCollateSetField name="entry_key"><MTComments lastn="1"><$MTCommentDate format="%y%m%d%H%M%S"$></MTComments></MTCollateSetField>
<MTCollateSetField name="entry_link"><$MTEntryPermalink$></MTCollateSetField>
<MTCollateSetField name="entry_title"><$MTEntryTitle encode_html="1"$></MTCollateSetField>
</MTCommentEntry>
</MTCollateRecord>
</MTComments>
</MTCollateCollect>
 
<div class="sidetitle">
Recent Comments
</div>
 
<div class="side">
<MTCollateList sort="entry_key:#:- comment_id:#:+">
<MTCollateIfHeader name="entry_key">
<a href="<$MTCollateField name="entry_link"$>" title="<$MTCollateField name="entry_title" encode_html="1"$>"><$MTCollateField name="entry_title"$></a><ul></MTCollateIfHeader>
<li><a href="<$MTCollateField name="entry_link"$>#<$MTCollateField name="comment_id"$>" encode_html="1"><$MTCollateField name="comment_author"$></a> <$MTCollateField name="comment_date"$></li>
<MTCollateIfFooter name="entry_key"></ul></MTCollateIfFooter>
</MTCollateList>
</div>

設定が終わったら保存・再構築してください。

4.さらにカスタマイズ
表示したいコメント件数を変更するには、リスト中に赤字で示した数字を変更してください。デフォルトは10件表示するようにしています。

<MTComments lastn="10">

またデフォルトでは、エントリー表示順序は新しいものを上に、エントリー内のコメントは古いものを上に表示する設定にしています。
エントリーの表示順を、古いものを上にする場合は以下のように変更してください。

<MTCollateList sort="entry_key:#:+ comment_id:#:+">

エントリー内のコメントの表示順を、新しいものを上にする場合は以下のように変更してください。

<MTCollateList sort="entry_key:#:- comment_id:#:-">

またエントリーの表示順序は最新コメントを受け取った順番で表示するようにしています。

2006.11.13
リストに encode_html 属性を追加しました。

2007.05.28
投稿者名が無記名の時に「Anonymous」を表示するよう変更しました。

Comments [59] | Trackbacks [32]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner


AMN
Categories
Monthly Archives
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3