Movable Typeのコメント一覧からウェブページのコメントを除外して表示する
Movable Type 4、Movable Type 5で、コメント一覧からウェブページのコメントを除外して表示するカスタマイズを紹介します。
変更前

変更後

1.基本
MTCommentsタグは、MTEntriesタグ内部で使った場合はブログ記事へのコメント、MTPagesタグ内部で使った場合はウェブページのコメントを出力しますが、単独(=MTEntriesタグやMTPagesタグで括らない)で利用した場合は、ブログ記事/ウェブページの両方のコメントを出力する仕様になっています。
MTCommentsタグには、ブログ記事/ウェブページのどちらへのコメントかを判定するモディファイアは用意されていません。
投稿コメントが、ブログ記事/ウェブページのどちらへのコメントかを判定するには、次のようにMTCommentsタグ、MTCommentEntryタグ、MTIfタグを組み合わせます。
<mt:Comments>
  <mt:CommentEntry>
    <mt:if tag="EntryClass" eq="entry">
      [ここに出力内容を記述]
    </mt:if>
  </mt:CommentEntry>
</mt:Comments>MTIfタグにはtagモディファイアを与え、MTEntryClassタグを判定します。MTEntryClassタグの内容が「entry」であればブログ記事への投稿、「page」であればウェブページへの投稿を示します。
2.ブログ記事のコメントのみを出力する
MTCommentsタグを単独で利用して、ブログ記事のコメントのみを出力するサブテンプレートを紹介します。
冒頭の画像のように、デフォルトの「最近のコメント」ウィジェットでブログ記事のコメントのみを出力するには、次のように変更します。青色が追加部分、赤色が変更部分です。
<mt:If tag="BlogCommentCount">
  <mt:SetVar name="comment_counter" value="0" />
  <mt:Comments lastn="0" sort_order="descend">
    <mt:CommentsHeader>
<div class="widget-recent-comments widget">
  <h3 class="widget-header">最近のコメント</h3>
  <div class="widget-content">
    <ul>
    </mt:CommentsHeader>
    <mt:CommentEntry>
      <mt:if tag="EntryClass" eq="entry">
        <mt:if name="comment_counter" lt="10">
      <li><strong><$mt:CommentAuthor$>:</strong> <$mt:CommentBody remove_html="1" words="10"$> <a href="<$mt:CommentLink$>" title="<mt:CommentEntry><$mt:EntryTitle$></mt:CommentEntry>へのコメント">続きを読む</a></li>
        <mt:SetVar name="comment_counter" op="++" />
        </mt:if>
      </mt:if>
    </mt:CommentEntry>
    <mt:CommentsFooter>
    </ul>
  </div>
</div>
    </mt:CommentsFooter>
  </mt:Comments>
</mt:If>MTIfタグのeqモディファイアの値「entry」を「page」に変更すれば、ウェブページへのコメント一覧を表示できます。

「「最近のコメント」をネイティブタグのみで適正に表示する」で紹介しているサブテンプレートでブログ記事のみを出力する場合、次のように変更します。青色が追加部分、赤色が変更部分です。
MTCommentEntryの終了タグは位置を変更しています。これは、ウェブページの処理を行った場合に不要な処理が実行されないようにするための対処です。
<mt:SetVar name="comment_counter" value="0" />
<mt:Comments lastn="0" sort_order="descend">
  <mt:CommentEntry>
    <mt:if tag="EntryClass" eq="entry">
      <mt:if name="comment_counter" lt="10">
        <mt:SetVarBlock name="entry_title"><a href="<mt:EntryPermalink />"><mt:EntryTitle /></a></mt:SetVarBlock>
        <mt:SetVarBlock name="entry_comment">
    <li><a href="<mt:EntryPermalink />#c<mt:CommentID />"><mt:CommentAuthor default="Anonymous"></a> <mt:CommentDate format="%m/%d"></li>
        </mt:SetVarBlock>
        <mt:SetVar name="comment_list{$entry_title}" value="$entry_comment" prepend="1" />
        <mt:SetVar name="comment_counter" op="++" />
      </mt:if>
      <mt:SetVar name="flag" value="0" />
      <mt:loop name="title_list">
        <mt:if name="__value__" eq="$entry_title">
          <mt:SetVar name="flag" value="1" />
        </mt:if>
      </mt:loop>
      <mt:unless name="flag">
        <mt:SetVar name="push(title_list)" value="$entry_title" />
      </mt:unless>
    </mt:if>
  </mt:CommentEntry>
</mt:Comments>
 
<dt class="sidetitle">
Recent Comments
</dt>
<dd class="side">
  <ul>
<mt:loop name="title_list">
    <li>
    <mt:getVar name="__value__" />
      <ul>
    <mt:getVar name="comment_list{$__value__}" />
      </ul>
    </li>
</mt:loop>
  </ul>
</dd>- Movable Typeのコメント完了ページの内容を記事ごとに振り分ける方法
- Movable Typeで特定カテゴリのコメントを表示する方法
- Movable TypeでreCaptchaを利用する
- Movable Typeでカテゴリ別+ブログ記事別に新着コメントを表示する
- Movable Type 5でコメント投稿フォームをポップアップする
- Movable TypeのコメントでFacebookアカウント認証を有効にする
- Yahoo! JAPAN OpenID を省略表示する(その2)
- コメントにHTMLタグ挿入ボタンをつける(MT4/MT5版)
- コメント投稿にTwitterのOAuth認証を導入
- Movable Type 5でのMTCommentsタグの動作
- ブログ記事とコメントをひとつのフィードで配信する
- Movable Typeのコメントにimg要素を許容する
- Movable Type(MT)のコメント投稿者の承認と禁止について
- Movable Type 5(MT5)のコメントのページ分割機能(その2:カスタマイズ)
- Movable Type 5 のコメントのページ分割機能(その1:概要)
 



