我们刚刚创建了一个主题注册函数,为我们的模块覆写了 hook_theme() 函数。在函数中,我们声明这个模块实现了一个叫做 theme_philquotes_quote() 的钩子,它有两个参数, $text 和 $origin。现在我们要创建这个函数。
这个函数的目的是,接受一些内容(一条名言)并配置它以便显示。下面是这个函数的第一个版本,只是进行基本的显示:
/**
* Theme function for theming quotes.
*
* @param $text
* The quote content as a string.
* @param $origin
* The original source of the quote, as a string.
* @return
* An HTML themed string.
*/
function theme_philquotes_quote($text, $origin) {
$output = '<div id="philquotes-text">'. t($text)
.'</div><div id="philquotes-origin">'. t($origin) .'</div>';
return $output;
}
在这个函数中,我们所做的只是把 $text 和 $origin 变量的内容封装在</div> 标记中,每个都由一个 id 属性。
回顾我们的 philquotes_block(),我们就知道这里发生了什么事:这个函数返回的字符串将显示为一个区块条目。显示时,看起来象这样:

插图 4-7
标题 Pithy Quote 来自 philquote_block(),而名言的 text 和 title 被显示为两个无风格的 <div/> 元素。我们取出了节点内容,并格式化为 HTML。
提示:有两个原因可能导致区块不显示。第一,如果没有已发布的名言,这里将什么也不显示。第二,区块缓存也许需要清除,Devel模块中包含的缓存清空工具可以帮你做到这一点。参见第一、第三章了解更多有关 Devel 模块的信息。
但是这种简单的格式化并没有特别的视觉吸引力。这可以通过在模块中添加 CSS 样式表加以改进。


conan 发表于 2009-01-13 09:18