Recent Reaction template ( with HotEntries )

http://hxxk.jp/2004/12/07/0007

記事データ

投稿者

望月真琴

投稿日時

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

タグ
概要

Recent Reaction template ( with SimpleComments ) を、 ray さん作の HotEntries で作り直すことでより実用的にしてみました。また、 HotEntries の私なりの解説も書いています。

リプライ

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

記事本文

Recent Reaction template ( with HotEntries ) の概要

Recent Reaction template ( with SimpleComments ) にて テンプレートを何度も修正してみましたが、納得のいくものは出来ませんでした。 理想は ray さんの SG::Acme : Hot Topics と同じものをプラグインのみで実現することだったのですが…… と諦めていたところ、 一晩寝たらとりあえず動くでもいいんじゃない?って思えてきた。 なわけでそっとおいておきます と追記されていたので、これを使わせていただくことにしました。

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

必須プラグイン

一度ローカルに保存し、拡張子を .pl に変更した上で plugins ディレクトリに put するだけです。

テンプレートの作成手順

  1. スクリーンショット テンプレートをクリックします。
  2. スクリーンショット 新しいインデックス・テンプレートを作るをクリックします。
  3. スクリーンショット テンプレートの名前を Recent Reaction template ( with HotEntries ) にし、出力ファイル名を recent_reaction_with_hotentries.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 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***$> 系のテンプレートタグを使用できます。

活用例

関連リソース

トラックバック送信先

リプライ

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

2004-12-07T02:09+09:00 - ray

一番面倒くさい部分をやってもらってしまいました・・・ 有難うございました。

2004-12-07T09:02+09:00 - ray

申し訳ないのですが、すっごいタコミスしていましたので、大幅に見直して、mt2系と3系の違いも考えそれなりにきちんとしたものに書き直しました。 プラグイン一覧に表示されるようになっているはずです。

2004-12-07T19:59+09:00 - 真琴

diff とらないままに入れ替えましたけど、大分書き変えていたみたいですね、ありがとうございます。 今 HotEntries を使用中のテンプレートに組み込んでいるので、今日中にはお披露目できると思います。

2005-08-14T02:28+09:00 - sort_order 表示を新しいものから表示させたい < リーマンジャパン

気がつくと古いものが一番上に、どうにかしなければと kxxk.jpさんを見て問題...

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

記入フォーム

補足情報

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