2005-11-07 アーカイブ

http://hxxk.jp/2005/11/07/

コメントおよびトラックバックの表示を様々な条件で自動切り替え

記事データ

投稿者

望月真琴

投稿日時

2005-11-07T22:53+09:00

タグ
概要

コメントやトラックバックが寄せられているか寄せられていないか、コメントやトラックバックの受信を行うようにしているかしていないかの各パターンにおいて生成される結果を変更する、というものです。条件式タグを用いることで 1 つの記述で全てのパターンに対応できるように工夫しています。

リプライ

リプライはまだありません。

記事本文

コメント / トラックバックの有無および受信の可否で表示を切り替える

今回は、 Web Standards with MT ver.3.2 Strict のテンプレートを例に出して Movable Type のテンプレートタグの活用方法を紹介します。 デフォルトテンプレートとは少々異なる書き方をしていますので、以後読み進める場合はテンプレートをダウンロードして、記事とテンプレートを見比べるとより理解しやすいと思います。 ( ←抱き合わせ商法 ( ←お金を取っているわけではありませんが ) )

ダウンロードされましたら、 archive_templates\individual_entry_archive.txt をご覧下さい。 79-109 行および 116-281 行の記述が今回のポイントとなります。 なお、今回は実例の紹介に留め、実際のテンプレートタグについては解説しません。 いずれ解説を行うかもしれませんが、テンプレートを見て分からない点があれば遠慮なくご質問ください。 また、 Movable Type 3.2x ではデフォルトテンプレートの記述でもこれに近い切り替えが実装されています。

今回紹介する例は、コメントやトラックバックが寄せられているか寄せられていないか、コメントやトラックバックの受信を行うようにしているかしていないかの各パターンにおいて生成される結果を変更する、というものです。 いくつかの組み合わせが考えられますが、そのパターンによってテンプレートを変更することなく、条件式タグを用いることで 1 つの記述で全てのパターンに対応できるように工夫しています。

  1. これまでにコメントが寄せられておらず、コメントの受信を行わない場合の例
  2. これまでにコメントが寄せられており、コメントの受信を行わない場合の例
  3. これまでにコメントが寄せられておらず、コメントの受信を行う場合の例
  4. これまでにコメントが寄せられており、コメントの受信を行う場合の例
  5. これまでにトラックバックが寄せられておらず、トラックバックの受信を行わない場合の例
  6. これまでにトラックバックが寄せられており、トラックバックの受信を行わない場合の例
  7. これまでにトラックバックが寄せられておらず、トラックバックの受信を行う場合の例
  8. これまでにトラックバックが寄せられており、トラックバックの受信を行う場合の例
  9. 早見表

これまでにコメントが寄せられておらず、コメントの受信を行わない場合の例

「コメントを受信」のチェックを外す まず、既存のコメントが無くコメントの受信も行わない場合を見てみましょう。 記事の作成時点からコメントを受信しないようにしている場合があてはまると思います。

コメント n 件という項目自体が非表示になる この場合、記事の冒頭の概要欄の「コメント n 件」という項目自体が生成されず、コメント機能自体が無いように見えることになります。

コメントの表示欄およびコメントフォームは生成されない また、コメントが投稿されていないのでコメントの表示は不要ですし、コメントの受信も行わないためコメントフォームも生成しません。

これまでにコメントが寄せられており、コメントの受信を行わない場合の例

「コメントを受信」のチェックを外す 次に、最初はコメントを受信するようにしていて既に 1 件以上のコメントが寄せられており、その状態からコメントの受信を行わないように変更した場合を見てみましょう。 いわゆるコメント欄を閉じた状態ですね。

コメント n 件という項目が生成され、コメント表示欄へのリンクが付加される この場合、既にコメントは寄せられているので記事の冒頭の概要欄の「コメント n 件」という項目は生成され、コメント表示欄へのフラグメント参照を示したリンクが付加されます。

コメントの表示は行うがコメントフォームは生成されない また、既にコメントが投稿されているのでそれらのコメントの表示はする必要がありますが、これ以降コメントの受信は行わないためコメントフォームの生成は不要です。 よって、「現在、コメント投稿は受け付けていません。」という表示を行っています。

これまでにコメントが寄せられておらず、コメントの受信を行う場合の例

「コメントを受信」のチェックを入れる 今度は、まだコメントは寄せられていないが、コメントの受信を行うようにしている場合を見てみましょう。 言い換えればコメント受付中だけどまだ 0 件という状態です。

コメント 0 件という項目は生成されるが、コメント表示欄へのリンクは付加されない この場合、まだコメントは寄せられていないので記事の冒頭の概要欄の「コメント 0 件」という項目は生成されますが、コメント表示欄へのフラグメント参照を示したリンクは付加しないようにしています。 ( まだコメントが無い状態なので、リンクによる誘導を行う必要が無いためです。 )

コメントフォームが生成される コメントが投稿されていないので「まだコメントは寄せられていません。」という表示を行い、合わせてコメントフォームを生成します。

これまでにコメントが寄せられており、コメントの受信を行う場合の例

「コメントを受信」のチェックを入れる そして、既に 1 件以上のコメントが寄せられており、継続してコメントの受信を行うようにしている場合を見てみましょう。

コメント n 件という項目が生成され、コメント表示欄へのリンクが付加される この場合、既にコメントは寄せられているので記事の冒頭の概要欄の「コメント n 件」という項目は生成され、コメント表示欄へのフラグメント参照を示したリンクが付加されます。

コメントの表示を行い、コメントフォームも生成される また、既にコメントが投稿されているのでそれらのコメントの表示を行い、合わせてコメントフォームを生成します。

これまでにトラックバックが寄せられておらず、トラックバックの受信を行わない場合の例

「トラックバックを受信」のチェックを外す ここからはトラックバック編です。 まず、既存のトラックバックが無くトラックバックの受信も行わない場合を見てみましょう。 記事の作成時点からトラックバックを受信しないようにしている場合があてはまると思います。

トラックバック n 件という項目自体が非表示になる この場合、記事の冒頭の概要欄の「トラックバック n 件」という項目自体が生成されず、トラックバック機能自体が無いように見えることになります。

トラックバックの表示欄およびトラックバック情報は生成されない また、トラックバックが投稿されていないのでトラックバックの表示は不要ですし、トラックバックの受信も行わないためトラックバック情報も生成しません。

これまでにトラックバックが寄せられており、トラックバックの受信を行わない場合の例

「トラックバックを受信」のチェックを外す 次に、最初はトラックバックを受信するようにしていて既に 1 件以上のトラックバックが寄せられており、その状態からトラックバックの受信を行わないように変更した場合を見てみましょう。 いわゆるトラックバック欄を閉じた状態ですね。

トラックバック n 件という項目が生成され、トラックバック表示欄へのリンクが付加される この場合、既にトラックバックは寄せられているので記事の冒頭の概要欄の「トラックバック n 件」という項目は生成され、トラックバック表示欄へのフラグメント参照を示したリンクが付加されます。

トラックバックの表示は行うがトラックバック情報は生成されない また、既にトラックバックが投稿されているのでそれらのトラックバックの表示はする必要がありますが、これ以降トラックバックの受信は行わないためトラックバック情報の生成は不要です。 よって、「現在、トラックバック送信は受け付けていません。」という表示を行っています。

これまでにトラックバックが寄せられておらず、トラックバックの受信を行う場合の例

「トラックバックを受信」のチェックを入れる 今度は、まだトラックバックは寄せられていないが、トラックバックの受信を行うようにしている場合を見てみましょう。 言い換えればトラックバック受付中だけどまだ 0 件という状態です。

トラックバック 0 件という項目は生成されるが、トラックバック表示欄へのリンクは付加されない この場合、まだトラックバックは寄せられていないので記事の冒頭の概要欄の「トラックバック 0 件」という項目は生成されますが、トラックバック表示欄へのフラグメント参照を示したリンクは付加しないようにしています。 ( まだトラックバックが無い状態なので、リンクによる誘導を行う必要が無いためです。 )

トラックバック情報が生成される トラックバックが投稿されていないので「まだトラックバックは寄せられていません。」という表示を行い、合わせてトラックバック情報を生成します。

これまでにトラックバックが寄せられており、トラックバックの受信を行う場合の例

「トラックバックを受信」のチェックを入れる そして、既に 1 件以上のトラックバックが寄せられており、継続してトラックバックの受信を行うようにしている場合を見てみましょう。

トラックバック n 件という項目が生成され、トラックバック表示欄へのリンクが付加される この場合、既にトラックバックは寄せられているので記事の冒頭の概要欄の「トラックバック n 件」という項目は生成され、トラックバック表示欄へのフラグメント参照を示したリンクが付加されます。

トラックバックの表示を行い、トラックバック情報も生成される また、既にトラックバックが投稿されているのでそれらのトラックバックの表示を行い、合わせてトラックバック情報を生成します。

早見表

条件 概要欄 コメント表示 / トラックバック表示 コメントフォーム / トラックバック情報
  • 既存コメント無し
  • コメントの受信を行わない
  • コメント n 件という項目自体が非表示になる
  • 生成しない
  • コメントの表示欄およびコメントフォームは生成されない
  • 生成しない
  • コメントの表示欄およびコメントフォームは生成されない
  • 生成しない
  • 既存コメント有り
  • コメントの受信を行わない
  • コメント n 件という項目が生成され、コメント表示欄へのリンクが付加される
  • リンク付きで生成
  • コメントの表示は行うがコメントフォームは生成されない
  • 既存コメントを表示
  • コメントの表示は行うがコメントフォームは生成されない
  • 生成しない
  • 既存コメント無し
  • コメントの受信を行う
  • コメント 0 件という項目は生成されるが、コメント表示欄へのリンクは付加されない
  • リンク無しで生成
  • コメントフォームが生成される
  • 「まだコメントは寄せられていません。」という表示
  • コメントフォームが生成される
  • 生成する
  • 既存コメント有り
  • コメントの受信を行う
  • コメント n 件という項目が生成され、コメント表示欄へのリンクが付加される
  • リンク付きで生成
  • コメントの表示を行い、コメントフォームも生成される
  • 既存コメントを表示
  • コメントの表示を行い、コメントフォームも生成される
  • 生成する
  • 既存トラックバック無し
  • トラックバックの受信を行わない
  • トラックバック n 件という項目自体が非表示になる
  • 生成しない
  • トラックバックの表示欄およびトラックバック情報は生成されない
  • 生成しない
  • トラックバックの表示欄およびトラックバック情報は生成されない
  • 生成しない
  • 既存トラックバック有り
  • トラックバックの受信を行わない
  • トラックバック n 件という項目が生成され、トラックバック表示欄へのリンクが付加される
  • リンク付きで生成
  • トラックバックの表示は行うがトラックバック情報は生成されない
  • 既存トラックバックを表示
  • トラックバックの表示は行うがトラックバック情報は生成されない
  • 生成しない
  • 既存トラックバック無し
  • トラックバックの受信を行う
  • トラックバック 0 件という項目は生成されるが、トラックバック表示欄へのリンクは付加されない
  • リンク無しで生成
  • トラックバック情報が生成される
  • 「まだトラックバックは寄せられていません。」という表示
  • トラックバック情報が生成される
  • 生成する
  • 既存トラックバック有り
  • トラックバックの受信を行う
  • トラックバック n 件という項目が生成され、トラックバック表示欄へのリンクが付加される
  • リンク付きで生成
  • トラックバックの表示を行い、トラックバック情報も生成される
  • 既存トラックバックを表示
  • トラックバックの表示を行い、トラックバック情報も生成される
  • 生成する

リプライ

リプライはまだ送られていないか、管理者の承認待ち状態です。 この記事に対するご意見やご質問、ご感想などありましたら個別記事ページの送信フォームからお送り下さい。

補足情報

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