[Drupal模板制作手册-1]主题定制概述
通常编写软件都需要把表现层和程序层分离。 这样做有 很多原因 , 最明显的就是编写后台业务逻辑程序所需知识和创建视觉外观、用户界面所需知识有很大不同。作为主题开发者,你可以控制某些可用数据的特定方面,但应该只限于数据输出和呈现样式。 只有Drupal核心和模块才能用以数据输入。 例如,一个模块可以产生带有默认外观的表格采集用户输入的数据,然后转存到数据库中。主题的作用应该仅仅是重写这些默认外观。
以上所述过程在Drupal中是通过 theme 函数来实现的。可以把它看作是数据到主题子系统的管道。它为主题引擎提供一个可选择的中间层,以便被例如 PHPTAL 或 Smarty 一类的标记语言利用, 它同时允许主题控制所有表现层标记。 主题引擎和标记语言同样是可选的。 PHPTemplate 即是默认的引擎。顾名思义,在输出变量和xHTML标签的混合体时它使用的是PHP语言。
自Drupal 6开始,创建主题引擎的要求实际上是降低了。
所有层次都能生成主题化的输出, 但是只有主题层可以重写(也有例外) 。 主题引擎可以重写来自核心与模块的输出,而主题可以重写其他一切东西。
请注意PHPTemplate引擎并不重写任何输出,但是有些其他引擎可以。 也有少数模块可以控制输出样式,并且几乎可以重写所有东西,但这种功能应当只用于少数特殊情况。 例如,主题模块devel 就有这样的功能,以帮助主题开发。 更多细节我们将在 下一节讨论 。
如果你想完全通过CSS来控制主题,那么你可以忽略下面的内容。但是如果有标签需要更改,知道如何访问数据输出的来源以自定义它 就变得十分重要。
- 请注意Drupal 核心以及数不清的模块总是用themable 函数和 模板文件来输出表现层的标签。请务必不要修改主题文件夹以外的文件,不然在系统需要升级时你会遇到麻烦。 我们把这种行为叫做”分流”. 开源软件的最大能量就在于有强大的社区后盾为你修复bug和开发新功能。 一旦你开始分流,你就失去了这个社区的支持。 Drupal已经提供重写表现层所需的所有功能。 除非你自己找到了Drupal的bug,否则修改主题文件夹以外的文件就是一件错事。这种情况下,请帮忙撰写bug报告。或者最好, 提供一个补丁修复这个问题。
- 对于那些在以前的版本中就熟悉过PHPTemplate引擎的人来说,几乎所有功能都已经变得更接近核心(即Drupal核心现在提供更多功能,从而不必使用PHPtemplate引擎)。 PHPTemplate现在的工作只包括探索与主题有关的theme函数和相应模板. 相对于“引擎”而言,现在它更多的是一个“主题帮手”。PHPTemplate was originally written by Adrian Rossouw for 4.7. The changes in 6 were the work of Earl Miles. An extended forum discussion provides some of the reasoning behind the initial creation of the engine and the issue queue for the new direction in 6.(PHPTemplate 的版本历史就不用翻译了吧?)
原文:http://drupal.org/node/171188
© 笨活儿 允许转载,但请以链接形式保留出处。也欢迎您使用RSS订阅本博客。

十月 22, 2009 10:00 下午
感谢了,感谢了!!!