コメント番号を降順で表示する

コメント番号を降順で表示する

Posted at June 3,2009 2:07 AM
Tag:[Comment, Customize, MovableType]

Movable Type 4(4.1~)で、ブログ記事に表示されるコメントのコメント番号を降順で表示するカスタマイズです。

1.MTCommentOrderNumber タグについて

コメント番号を表示するには、MTCommentOrderNumber タグを利用します。このタグは、コメント一覧に表示するコメントに対し、1から順番に番号(以下「コメント番号」)を付与するためのファンクションタグです。

デフォルトテンプレート(MT4.2 コメントテンプレートモジュール)での使用例は次の通りです。青色の MTCommentOrderNumber タグを追加します(そもそも特殊変数 __counter__ を利用するという手もありますが)。あと、説明の都合上、MTComments タグに sort_order="ascend" を付与して昇順に表示します。

...前略...
<mt:Comments sort_order="ascend">
  <mt:CommentsHeader>
<h2 class="comments-header"><$mt:EntryCommentCount singular="コメント(1)" plural="コメント(#)" none="コメント(0)"$></h2>
<div class="comments-content">
  </mt:CommentsHeader>
  <div id="comment-<$mt:CommentID$>" class="comment<mt:IfCommentParent> comment-reply</mt:IfCommentParent><mt:IfCommenterIsEntryAuthor> entry-author-comment</mt:IfCommenterIsEntryAuthor>">
    <div class="inner">
      <div class="comment-header">
        <div class="asset-meta">
          <span class="byline">
            <$mt:CommentAuthorIdentity$>
<mt:IfCommentParent>
              <span class="vcard author"><$mt:CommentAuthorLink$></span>から<a href="<mt:CommentParent><$mt:CommentLink$></mt:CommentParent>"><mt:CommentParent><$mt:CommentAuthor$></mt:CommentParent></a>への返信
<mt:Else>
              <span class="vcard author"><$mt:CommentAuthorLink$></span>
</mt:IfCommentParent>
              | <a href="<$mt:CommentLink$>"><abbr class="published" title="<$mt:CommentDate format_name="iso8601"$>"><$mt:CommentDate$></abbr></a>
<mt:IfCommentsAccepted>
              | <$mt:CommentReplyToLink$>
</mt:IfCommentsAccepted>
[ <mt:CommentOrderNumber /> ]
          </span>
        </div>
      </div>
      <div class="comment-content">
        <$mt:CommentBody$>
      </div>
    </div>
  </div>
  <mt:CommentsFooter>
</div>
  </mt:CommentsFooter>
</mt:Comments>
...後略...

上記の完成例(「返信」の右側に表示されているのがコメント番号)

ただし、MTComments タグに sort_order="descend" を与えて、コメントを降順に表示しても、次のようにコメント番号は降順に表示されません。

MTCommentOrderNumber タグは、MTComments タグの表示条件や処理中のコメントに連動するわけではなく、単純なインクリメントしか行なわないためです。

2.コメント番号を降順に表示するカスタマイズ

コメント番号を降順に表示するには、元の「コメント」テンプレートモジュールに、次の青色部分を追加します。MTEntryCommentCount タグでブログ記事のコメント数を取得し、MTComments タグの繰り返し処理の中で、その値を表示&デクリメントします。MTCommentOrderNumber タグは用いません。

...前略...
<mt:entryCommentCount setvar="entry_comment_count" />
<mt:Comments sort_order="descend">
  <mt:CommentsHeader>
<h2 class="comments-header"><$mt:EntryCommentCount singular="コメント(1)" plural="コメント(#)" none="コメント(0)"$></h2>
<div class="comments-content">
  </mt:CommentsHeader>
  <div id="comment-<$mt:CommentID$>" class="comment<mt:IfCommentParent> comment-reply</mt:IfCommentParent><mt:IfCommenterIsEntryAuthor> entry-author-comment</mt:IfCommenterIsEntryAuthor>">
    <div class="inner">
      <div class="comment-header">
        <div class="asset-meta">
          <span class="byline">
            <$mt:CommentAuthorIdentity$>
<mt:IfCommentParent>
              <span class="vcard author"><$mt:CommentAuthorLink$></span>から<a href="<mt:CommentParent><$mt:CommentLink$></mt:CommentParent>"><mt:CommentParent><$mt:CommentAuthor$></mt:CommentParent></a>への返信
<mt:Else>
              <span class="vcard author"><$mt:CommentAuthorLink$></span>
</mt:IfCommentParent>
              | <a href="<$mt:CommentLink$>"><abbr class="published" title="<$mt:CommentDate format_name="iso8601"$>"><$mt:CommentDate$></abbr></a>
<mt:IfCommentsAccepted>
              | <$mt:CommentReplyToLink$>
</mt:IfCommentsAccepted>
[ <mt:getVar name="entry_comment_count" /> ]
<mt:setVar name="entry_comment_count" op="--" />
          </span>
        </div>
      </div>
      <div class="comment-content">
        <$mt:CommentBody$>
      </div>
    </div>
  </div>
  <mt:CommentsFooter>
</div>
  </mt:CommentsFooter>
</mt:Comments>
...後略...

上記の完成例

関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)