記事本文
コメントとトラックバックの扱いの違い
hxxk.jp template set -standard- のコードを見直している時に再認識したことがあるので書いておきます。
Movable Type の各記事のコメントについては、「なし」「オープン」「クローズ」という 3 つの状態があり、トラックバックの場合は「トラックバックを受けつける」または「受けつけない」の 2 つの状態があります。
これはそれぞれの特性をきちんと理解して使わないと混乱しますので、一覧にしてみました。
コメント「オープン」
コメントが「オープン」の状態は、コメント部分の表示をしつつ、コメントの投稿自体も受け付ける状態です。
記事のコメントの状態が「オープン」になっていれば、テンプレートの中で
<MTEntryIfCommentsOpen>
〜
</MTEntryIfCommentsOpen>
で囲まれた部分が有効になります。
MTEntryIfCommentsOpen テンプレートタグは
名前に
なので、
If
が含まれているタグ
<MTEntryIfCommentsOpen>
〜
</MTEntryIfCommentsOpen>
の内側で MTElse テンプレートタグを用いて「オープンではない」状態の記述をすることもできます。
コメント「なし」
コメントが「なし」の状態は、コメント部分の表示をせず、またコメントの投稿自体も受け付けない状態です。
最初からコメントの投稿を受け付けない場合に用います。
記事のコメントの状態が「なし」になっていれば、テンプレートの中で
<MTEntryIfCommentsOpen>
〜
</MTEntryIfCommentsOpen>
で囲まれた部分が無効になります。
MTEntryIfCommentsOpen テンプレートタグは
名前に
なので、
If
が含まれているタグ
<MTEntryIfCommentsOpen>
〜
</MTEntryIfCommentsOpen>
の内側で MTElse テンプレートタグを用いていればその部分の記述が有効になります。
しかし、実際のテンプレートでは
<MTEntryIfCommentsOpen>
〜
</MTEntryIfCommentsOpen>
の更に外側を
<MTEntryIfAllowComments>
〜
</MTEntryIfAllowComments>
で囲んでいるため、コメント「なし」の状態では
<MTEntryIfCommentsOpen>
〜
</MTEntryIfCommentsOpen>
内に MTElse を記述していてもその部分は表示されません。
最初からコメント「なし」の状態であればコメント関係の部分全てが表示されません。 また、最初はコメント「オープン」で公開し、後からコメント「なし」にした場合、既に投稿されたコメントも表示されなくなってしまいます。 既にコメントが投稿されている場合は、コメント「なし」ではなくコメント「クローズ」を使うようにしてください。
コメント「クローズ」
コメントが「クローズ」の状態は、コメント部分の表示をしますが、コメントの投稿自体は受け付けない状態です。
コメントの投稿を締め切った場合に用いられます。
記事のコメントの状態が「クローズ」になっていれば、テンプレートの中で
<MTEntryIfCommentsOpen>
〜
</MTEntryIfCommentsOpen>
で囲まれた部分が無効になります。
MTEntryIfCommentsOpen テンプレートタグは
名前に
なので、
If
が含まれているタグ
<MTEntryIfCommentsOpen>
〜
</MTEntryIfCommentsOpen>
の内側で MTElse テンプレートタグを用いていればその部分の記述が有効になります。
コメント「なし」で説明したのと同様に、実際のテンプレートでは
<MTEntryIfCommentsOpen>
〜
</MTEntryIfCommentsOpen>
の更に外側を
<MTEntryIfAllowComments>
〜
</MTEntryIfAllowComments>
で囲んでいますが、 MTEntryIfAllowComments テンプレートタグは
コメントの設定が
という扱いになっているため、既に投稿されたコメントは表示され、コメント投稿フォームだけが表示されないようになります。
Open
もしくは
Closed
の場合に表示されます
トラックバックを受けつける
「トラックバックを受けつける」状態 ( = チェックボックスにチェックが入っている状態 ) は、トラックバック用の URI や受信したトラックバックの一覧を表示する状態です。
記事の「トラックバックを受けつける」のチェックボックスのチェックが入っていれば、テンプレートの中で
<MTEntryIfAllowPings>
〜
</MTEntryIfAllowPings>
で囲まれた部分が有効になります。
MTEntryIfAllowPings テンプレートタグは
名前に
なので、
If
が含まれているタグ
<MTEntryIfAllowPings>
〜
</MTEntryIfAllowPings>
の内側で MTElse テンプレートタグを用いて「トラックバックを受け付けない」状態の記述をすることもできます。
トラックバックを受けつけない
「トラックバックを受けつけない」状態 ( = チェックボックスにチェックが入っていない状態 ) は、トラックバック用の URI や受信したトラックバックの一覧を表示しない状態です。
記事の「トラックバックを受けつける」のチェックボックスのチェックが入っていなければ、テンプレートの中で
<MTEntryIfAllowPings>
〜
</MTEntryIfAllowPings>
で囲まれた部分が無効になります。
MTEntryIfAllowPings テンプレートタグは
名前に
なので、
If
が含まれているタグ
<MTEntryIfAllowPings>
〜
</MTEntryIfAllowPings>
の内側で MTElse テンプレートタグを用いて「トラックバックを受け付けない」状態の記述をしていれば、その部分が表示されます。
トラックバックを受けつけない場合の問題点
実は、デフォルトテンプレートには
<MTEntryIfAllowPings>
〜
</MTEntryIfAllowPings>
で囲む範囲を間違えているという問題があります。
<MTEntryIfAllowPings>
<h2 id="trackbacks">トラックバック</h2>
<p class="techstuff">このエントリーのトラックバックURL:<br />
<$MTEntryTrackbackLink$></p>
<MTIfNonZero tag="MTEntryTrackbackCount">
<p>このリストは、次のエントリーを参照しています: <a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>:</p>
<MTPings>
<p id="p<$MTPingID$>">
» <a href="<$MTPingURL$>"><$MTPingTitle$></a> from <$MTPingBlogName$><br />
<$MTPingExcerpt$> <a href="<$MTPingURL$>">[続きを読む]</a>
</p>
<p class="posted">トラックバック時刻: <$MTPingDate$></p>
</MTPings>
</MTIfNonZero>
</MTEntryIfAllowPings>
この記述ですと、最初にトラックバックを受けつけるようにしていて、後からトラックバックを受けつけないようにした場合に、受信済みのトラックバックも表示しなくなってしまいます。
何故なら、 MTEntryIfAllowPings テンプレートタグは
エントリーがトラックバックを受けつける設定になっているときに、内容を表示するコンテナ・タグ
であるため、トラックバックを受けつけない設定になっていなければその内容を表示することはありません。
<MTIfNonZero tag="MTEntryTrackbackCount">
<h2 id="trackbacks">トラックバック</h2>
<MTEntryIfAllowPings>
<p class="techstuff">このエントリーのトラックバックURL:<br />
<$MTEntryTrackbackLink$></p>
<MTElse>
<p class="techstuff">このエントリーはトラックバックの受付を終了しました。</p>
</MTElse>
</MTEntryIfAllowPings>
<MTElse>
<MTEntryIfAllowPings>
<h2 id="trackbacks">トラックバック</h2>
<p class="techstuff">このエントリーのトラックバックURL:<br />
<$MTEntryTrackbackLink$></p>
</MTEntryIfAllowPings>
</MTElse>
<p>このリストは、次のエントリーを参照しています: <a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>:</p>
<MTPings>
<p id="p<$MTPingID$>">
≫ <a href="<$MTPingURL$>"><$MTPingTitle$></a> from <$MTPingBlogName$><br />
<$MTPingExcerpt$> <a href="<$MTPingURL$>">[続きを読む]</a>
</p>
<p class="posted">トラックバック時刻: <$MTPingDate$></p>
</MTPings>
</MTIfNonZero>
このようにテンプレートを書けば、おそらく問題は無いはずです。 その場合の、それぞれのパターンを想定すると次のようになります。
- トラックバックを 1 件も受信しておらず、トラックバックを受け付けない場合
-
トラックバック関連の部分は全く表示されません。 コメント「なし」と同じような状態です。
- トラックバックを 1 件も受信しておらず、トラックバックを受け付ける場合
-
<h2 id="trackbacks">トラックバック</h2> <p class="techstuff">このエントリーのトラックバックURL:<br /> http://hxxk.jp/sys/mt3/mt-tb.cgi/580</p>のような記述になります。
- トラックバックを 1 件以上受信しており、トラックバックを受け付けない場合
-
<h2 id="trackbacks">トラックバック</h2> <p class="techstuff">このエントリーはトラックバックの受付を終了しました。</p> <p>このリストは、次のエントリーを参照しています: ( 以下受信したトラックバックを表示 )のような記述になります。 コメント「クローズ」と同じような状態です。
- トラックバックを 1 件以上受信しており、トラックバックを受け付ける場合
-
<h2 id="trackbacks">トラックバック</h2> <p class="techstuff">このエントリーのトラックバックURL:<br /> http://hxxk.jp/sys/mt3/mt-tb.cgi/580</p> <p>このリストは、次のエントリーを参照しています: ( 以下受信したトラックバックを表示 )のような記述になります。
公開テンプレートも差し替えました
トラックバックを受けつけない場合の問題点を以前の公開テンプレートも持っていたため、合わせて書き換えました。 hxxk.jp template set -standard- ダウンロードから取得してください。

