回响

### Movable Type 使用手册：回响

« 目录

- 回响

- 预览回响
- 发表回响出错

# 回响

Movable Type 具备有内建的回响系统功能。你可以选择特定的文章项目来编辑，然后找到编辑回响的区域，于是也可以修改特定文章项目的回响内容。回响都会列在这边，你祇要在回响作者的名字上点选，就可以在结果页面中修改回响内容。你同时也可以先核选某些回响的核选框，然后按下`删除所选`按钮来删除回响。

跟 Movable Type 一起发行的预设模版中，就已经纳入了回响的功能了。也就是说，你根本不需要另外再编辑回响模版，就已经可以使用回响功能。在这组预设的模版中，回响会以弹出式窗口呈现（也就是在主索引模版中的链结），也会出现在单篇汇整页面里。你可以藉由改变合适的模版来修改这个预设的作用方式。

Movable Type 的回响系统可以有两种运作方式（也可以同时并行）：

- 嵌入
  如果你用了单篇汇整（请参见汇整小节），而要让每一个汇整页面都把该文章项目的回响包含其中，你可能会用如下的模版：

      <p><font class="title"><$MTEntryTitle$></font></p>
      <$MTEntryBody$>
      <MTComments>
      <$MTCommentBody$>
      <font class="post">由 <$MTCommentAuthorLink$> 所发表</font><br /><br />
      </MTComments>

  事实上预设的单篇汇整模版就包含了一样的结构。

- 弹出式窗口
  如果你使用了任何其它种类的汇整 -- 也就是说在同一页里会有不祇一则文章项目的时候 -- 把相对应的回响镶嵌其中似乎就不是很合适的作法。在这种情况下， Movable Type 也支持动态生成的弹出式窗口，来让你显示相对应的回响（ &agrave; la Blog Voices 之类的）。你可以在跟著 Movable Type 一并释出的列出回响模版中看到这样的作法：

      <MTComments>
      <$MTCommentBody$>
      <font class="post">由 <$MTCommentAuthorLink$> 所发表</font><br /><br />
      </MTComments>

  下列的 Javascript 会在弹出式窗口的链结中用到：

      <script type="text/javascript">
      function OpenComments (c) {
          window.open(c,
                     'comments',
                     'width=480,height=480,scrollbars=yes,status=yes');
      }
      </script>

  紧接著这个 Javascript 会在下列的网页码中被叫用：

      <MTEntryIfAllowComments>
      <a href="<$MTCGIPath$><$MTCommentScript$>?entry_id=<$MTEntryID$>" onclick="OpenComments(this.href);
      return false">回响 (<$MTEntryCommentCount$>)</a>
      </MTEntryIfAllowComments>

当然，在这种情境下，你也会想要提供某份表格，让读者可以输入新的回响。这份表格看起来可能像是这样：

    <form method="post" action="<$MTCGIPath$><$MTCommentScript$>">
    <input type="hidden" name="entry_id" value="<$MTEntryID$>">
    姓名： <input name="author"><p>
    E-mail 地址： <input name="email"><p>
    网页网址： <input name="url"><p>
    回响内容： <textarea name="text" rows="10" cols="50"></textarea><p>
    <input type="submit" name="preview" value="预览">
    <input type="submit" name="post" value="送出">
    </form>

如果你正在使用静态/嵌入式回响，请注意你得按照下列的范例多增加一个隐藏的输入字段：

    <input type="hidden" name="static" value="1">

这一列会告诉系统你正在使用嵌入式回响，所以需要强迫系统在某人发表了新的回响之后，重建相关的汇整页面和索引页面。

同时请注意，不论是在哪一种情况 -- 嵌入式回响或弹出式回响 -- 下，你的索引页面都会在某个人发表了回响后被重建，同时也会更新该则文章项目的回响计数器（请参见模版卷标中的 `MTEntryCommentCount` ）。除此之外，如果你正在使用嵌入式回响的话，该则文章项目的汇整页面也会被重建，好让新的回响可以增加到那份单篇汇整下方。

## 预览回响

Movable Type 也内建了预览回响的功能，所以你的读者可以在发表回响之前先行预览。这个功能同样地也提供在预设的模版之中；如果你想要把这个功能拿掉的话，仅需要从回响表格里删去`预览`按钮即可。预览回响的板面安排则是由`预览回响`模版所定义的，你可以用 `<$MTCommentPreview*$>` 卷标附加上全域卷标属性 `encode_html` 来做出可以编辑的预览回响表格；这么一来，读者不但可以预览他们将发表的回响，还可以再行编辑，最后才真的送出。预设的模版当中就有这么一个例子。

当你要建立可编辑的预览回响模版时，你都得在你的`预览回响`和`发表回响出错`模版中加入这一个隐藏的输入字段：

    <input type="hidden" name="static" value="<$MTCommentPreviewIsStatic$>">

这一个神奇的卷标会告诉系统读者到底是从单篇汇编发表回响的，还是从弹出式窗口。所以在回响发表之后，使用者会被转到正确的页面去。

当然你也可以再把其它对这一篇文章项目所发表的回响也一起列出来，祇需要用标准的 <MTComments> 容器卷标就可以办到：

    之前的回响：
    <MTComments>
    <$MTCommentBody$>
    由 <$MTCommentAuthorLink$> 于 <$MTCommentDate$> 所发表
    </MTComments>

## 发表回响出错

如果在发表回响的时候出了差错 -- 像是说你不允许匿名发表回响，可是要发表回响的读者却没有提供名字或E-mail 地址等信息的情况 -- 这个时候你可以使用`回响出错模版`来决定要让读者看到怎么样的错误讯息。你也可以用这个模版来提供另一个表格，让读者得以把错误的地方更正，然后重新发表（或预览）回响。事实上预设的模版组合中，就有一个这样的`回响出错模版` ( http://www.movabletype.org/default_templates.shtml ) 。

Copyright © 2001-2003 Six Apart. All Rights Reserved.