記事本文
Recent Reaction template ( with HotEntries ) の概要
Recent Reaction template ( with SimpleComments ) にて
テンプレートを何度も修正してみましたが、納得のいくものは出来ませんでした。
理想は ray さんの SG::Acme : Hot Topics と同じものをプラグインのみで実現することだったのですが……
と諦めていたところ、
一晩寝たらとりあえず動くでもいいんじゃない?って思えてきた。
なわけでそっとおいておきます
と追記されていたので、これを使わせていただくことにしました。
テンプレートの作成手順
-
テンプレートをクリックします。
-
新しいインデックス・テンプレートを作るをクリックします。
-
テンプレートの名前を Recent Reaction template ( with HotEntries ) にし、出力ファイル名を recent_reaction_with_hotentries.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 HotEntries )</title>
</head>
<body>
<h1><$MTBlogName$> - Recent Reaction ( with HotEntries )</h1>
<MTHotEntries lastn="1000">
<h2><a href="<$MTEntryLink$>"><$MTEntryTitle encode_html="1"$></a></h2>
<h3><a href="<$MTEntryLink$>#comments">Comments : <$MTEntryCommentCount$></a> <a href="<$MTEntryLink$>#trackbacks">Trackbacks : <$MTEntryTrackbackCount$></a></h3>
<dl>
<dt><$MTEntryExcerpt encode_html="1"$></dt>
<dd>
<dl>
<MTRecentResponces lastn="1000" sort_order="ascend">
<MTIfResponceIsComment>
<dt><$MTCommentAuthorLink default_name="Anonymous" spam_protect="1" show_email="0"$><MTCommentAuthorIdentity> : <$MTCommentDate format="%Y/%m/%d %H:%M"$> ID : c-<$MTCommentID$></dt>
<dd>
<$MTCommentBody$>
</dd>
<MTElse>
<dt><cite><a href="<$MTPingURL$>"><$MTPingBlogName$> - <$MTPingTitle$></a></cite> : <$MTPingDate format="%Y/%m/%d %H:%M"$> ID : p-<$MTPingID$></dt>
<dd>
<p title="<$MTPingTitle$>の概要">
<$MTPingExcerpt$>
</p>
</dd>
</MTElse>
</MTIfResponceIsComment>
</MTRecentResponces>
</dl>
</dd>
</dl>
</MTHotEntries>
<p>
Powered by <a href="http://www.movabletype.org">Movable Type <$MTVersion$></a>
</p>
</body>
</html>
サンプル
これは hxxk.jp のテンプレートとして作成していますので、 hxxk.jp にコメントやトラックバックが寄せられることにより、随時更新されます。
正式採用のテンプレートが決定したため、自動での再構築はしないように変更しました。
必ずしも最新のコメントが反映されているとは限りません。
テンプレートタグの解説
解説と言っても、私は perl の知識が皆無であり、プラグインのソースを読めません……。 テンプレートを作ってみた上で分かったことを書いているので、もしかしたら間違っている部分があるかもしれません。 ray さんに IRC で要望を出したら、早速対応してくれた上に、解説もしていただきました。 ありがとうございます ! なお、以下の解説では便宜上「コメントまたはトラックバック」をレスポンスと表現します。
<MTHotEntries lastn="n">-
MTEntries コンテナタグと同じような扱い方をすることができるそうです。 lastn 属性を合わせて使うことにより、「レスポンスがあった記事最新 n 件」というように抽出できます。 lastn 属性が未指定の場合は
lastn="20"として取り扱われるようです。 <MTRecentResponces firstn="n" | lastn="n" sort_order="ascend | descend">-
MTHotEntries コンテナタグ中で使用します。 MTHotEntries によって抽出された記事において、記事ごとにレスポンスを抽出できます。
lastn 属性を合わせて使うことにより、「最新 n 件のレスポンス」を抽出できます。 それより前のレスポンスは、各個別記事へ誘導するようにしておくと良いでしょう。 逆に、「最初の n 件のレスポンス」を抽出し、残りのレスポンスは各個別記事を参照してもらいたいような場合は、 firstn 属性を使います。 firstn | lastn 属性が未指定、あるいは n が自然数でない場合は
lastn="5"として取り扱われるようです。 また、 firstn 属性と lastn 属性の両方が指定されている場合は、 firstn 属性が優先されるとのことです。sort_order 属性を使うことにより、レスポンスの表示順を変更できます。
sort_order="ascend"で投稿日時が古い順、sort_order="descend"で投稿日時が新しい順に並べられます。 sort_order 属性が未指定、あるいは ascend | descend 以外の値の場合はsort_order="descend"が指定されたとみなされるため、新しい順に並べる場合は指定する必要はありません。 逆に、古い順に並べる場合は必ずsort_order="ascend"と明示的に指定しておく必要があります。これより、考えられる属性の組み合わせは
<MTRecentResponces firstn="n" sort_order="ascend">または<MTRecentResponces lastn="n" sort_order="descend">のどちらかになると思います。 ( 最初の n 件を抜き出して新しい順に並べるとか、最新の n 件を抜き出して古い順に並べるという指定をすることは無いでしょう、おそらく。 ) <MTIfResponceIsComment>-
MTRecentResponces コンテナタグ中で使用します。 読んで字の如く、「レスポンスがコメントであったなら」という条件式テンプレートタグなので、
<$MTComment***$>系のテンプレートタグを使用できます。 <MTElse>-
MTIfResponceIsComment 条件式テンプレートタグ中で使用します。 MTIfResponceIsComment ではない、すなわち「レスポンスがコメントでないなら ( = レスポンスがトラックバックであるなら ) 」という条件式テンプレートタグなので、
<$MTPing***$>系のテンプレートタグを使用できます。
活用例
- コメントやトラックバックの管理に
- コメントやトラックバックが活発な weblog のナビゲーションページに
- それらしいスタイルシートを作成して、掲示板ライクなページに

