老葛的Drupal培训班 Think in Drupal
主题系统可以使用多个模板语言。Smarty, PHPTAL, 和PHPTemplate都可以与Drupal集成,用来向模板文件中添加动态数据。为了使用这些语言,需要一个叫做主题引擎的包装器,用来在模板语言和Drupal之间进行交互。你可以在
http://drupal.org/project/Theme+engines中找到对应模板语言的主题引擎。安装主题引擎其实很简单,只需要通过将相应主题引擎的目录放置到你站点的主题引擎目录下面就可以了。如果仅用于单个站点,使用目录sites/
sitename/themes/engines;如果用于多个Drupal站点,则使用目录sites/all/themes/engines,如图8-1所示。
Drupal社区创建了一个自己的引擎,专门对Drupal作了优化。它就是PHPTemplate,它使用PHP作为模板语言,这样它就不需要中间层的解析环节了,而其它模板语言常常需要这一环节。这是Drupal最常用的模板引擎,它是Drupal自带的。它位于themes/engines/phptemplate,如图8-2所示:
图8-1 为Drupal添加定制主题引擎的目录结构
图8-1 Drupal核心主题引擎的目录结构。这个位置专门用于放置核心主题引擎。
注意 完全可以不使用模板语言,而简单的使用纯php的模板文件。如果你是热衷于追求速度,或者可能仅仅是想折磨一下你的设计人员,那么你可以不使用主题引擎而仅仅整个主题包装在PHP函数中,比如使用函数themename_page()和themename_node()来代替模板文件。一个基于PHP主题的示例,可参看themes/chameleon/chameleon.theme。
当你安装好一个主题引擎后,你不会看到你的站点有了任何改变。这是因为,主题引擎仅仅是一个接口库,在它被使用以前,你仍然需要安装一个依赖于该主题引擎的Drupal主题。
要使用哪一个模板语言呢?如果你正在转换一个遗留站点,那么可能使用以前的模板语言会更方便一些;也许你的设计团队更倾向于使用所见即所得的编辑器,这样PHPTAL应该是个更好的选择,因为它可以阻止这些编辑器对模板的破坏。你可以发现,大多数的文档和支持都是关于PHPTemplate的,如果你是从头开始建立一个站点的话,那么从长期的维护和社区支持这两个方面来看,PHPTemplate应该是最好的选择。