创建drupal过滤器和输入格式

前面,我们为新闻简讯创建了一个新的内容类型,新闻简讯将放在每个站点新闻邮件的最上面。

但是,对于新闻简讯节点的内容我们要进行几样变更:

  1. 当我们用电子邮件发送内容时,我们要确保新闻简讯中的 HTML 都已经去除掉了。简而言之,我们要的是纯文本。Drupal 的 check_plain() 函数看起来可以完成这项任务,可是它只是把 HTML 转义了而不是去除它们。我们想要的是去除这些 HTML 标记。
  2. 有一些通用信息可能会在所有内容中出现,不过我们想要这些内容周期性地改变。例如,问候语和时事通讯的名字。我们想为这些信息创建一些占位符,然后让 Drupal 根据需要用有意义的文本替换这些占位符。

第一项任务是去除不想要的内容。第二项任务是添加内容。这些任务都可以用过滤器(filter)实现。

过滤 API 是 Filter 模块提供的。

采用这个系统,我们需要定义一个新的输入格式(input format)。输入格式是一套过滤器(格式化规则),它决定了文本中允许出现的标记或代码。Drupal出品时就提供了两个输入格式:Filtered HTML 和 Full HTML。这两种格式决定了文本中允许出现哪些 HTML 标记和结构。

其它输入格式
Drupal发行版中提供的过滤器不仅仅只是两个内置格式使用的那些。PHP 模块也提供了另一种过滤器用于过滤 PHP 代码。Drupal 网站上还有些其它过滤器,它们是做为第三方模块提供的。在本章稍后,我们将讨论如何创建自定义的输入格式,它们具有自己的一系列过滤器。

我们将创建一个新的输入格式叫做 Tagless text,我们将用它去除文本中的 HTML 标记和其它标记。

输入格式可以被传递给 Drupal 的内置函数 check_markup(),告诉 Drupal 如何过滤发送到客户端的内容。

虽然叫输入过滤器,但内容第一次放入Drupal时却很少用它进行过滤。在很大程度上,存储的文本就是用户输入的内容。在存储之前是不进行过滤的,只是在显示之前才送去过滤。

输入格式本身并不进行任何过滤操作。输入格式更象是个容器。特定的过滤器被指派给输入格式,对文本进行必要的操作是过滤器的工作。

例如,默认的 Filtered HTML 输入格式被指派了如下过滤器:

  • HTML corrector: 修正 HTML 标记中的错误
  • HTML filter: 去除不想要的标记
  • Linebreak converter: 把换行替换为 <br/> 和 <p/> 标记
  • URL filter: 把 URL 转换成超链接

虽然输入格式的作用是容器,不过每个过滤器背后都是一段代码(一个hook_fileter() 的实作)执行实际的文本处理。

评论

发表新评论

此内容将保密,不会被其他人看见。
  • 允许HTML标签:<a> <img><em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><p>
  • 自动断行和分段。

更多关於格式化选项的信息

Image CAPTCHA
验证码
|