在上一章中我们编写了一个模块,从自定义内容类型中读取数据、并显示为区块内容。这个模块使用了我们创建的 Quote 内容类型。为了给我们的新内容类型提供布局信息,我们创建了一个默认主题作为模块的一部分。我们编写的主题代码生成必要的 HTML 和 CSS 以显示名言。
提示:在上一章末尾,我们为 Descartes 主题添加了一个模板,覆写了模块的默认主题。不过,在本章中,我们将继续使用默认主题。你必须取消 Descartes 主题中针对 philquotes 的修改,以便继续使用默认的主题。
当我们的 philquotes 模块在区块中显示时,一条名言显示为区块的内容。输出类似下面:
插图 5-1
现在我们要扩充 philquotes 模块。
我们将为它添加新特性:不必重新装入页面就可以刷新名言。为了做到这一点,我们将使用 Drupal JavaScript API 以及 jQuery 库的几个特性。
因此,当我们的模块完成时,将生成如下的区块:
插图 5-2
注意这条名言底部的 Next >> 链接。当点击它时,将重新装入名言的出处和正文,从数据库中随机选择另一条名言。
那么如何才能做得到呢?我们从现有代码开始。不过大多数代码不必修改,我们将在其中添加代码。
我们上一章中开发的 Philosophy Quotes 模块定义了如下函数:
- philquotes_help(): hook_help() 钩子的一个实现。这个函数不需要修改。
- philquotes_block(): hook_block() 钩子的一个实现。因为我们不需要修改区块代码,因此这个函数也不用动。
- philquotes_theme(): hook_theme() 钩子的一个实现。这个函数也不用修改。
在我们的更改中,它们不会提供新的服务,因此在模块中也不再是主角。我们将使用下列函数:
- _philquotes_get_quote(): 这个函数处理数据库查询。我们将在另一个环境中使用这个函数。
- theme_philquotes_quote(): 我们将对这个函数进行稍许修改。
当然,我们将在模块中添加一些新的函数。不过,本章中最大量的编程任务不是用 PHP 完成的,而是用 JavaScript。
提示:JavaScript 的调试是个令人头痛的问题。Firefox 的扩展 FireBug (http://www.getfirebug.com/) 能帮上很大的忙。FireBug提供了一个调试器,还提供了 DOM (Document Object Model), HTML, 和 CSS 浏览,一个高级日志设施,还可以通过命令行访问 JavaScript 解释器。
我们要做的第一件事儿,是用 JavaScript 为我们的网页添加一些 HTML。


libo 发表于 2009-01-14 13:21