对于Drupal6,有一个新的主题开发指南可用。
对于模块开发者,可参看该页:模块开发指南里面的使用主题层
Drupal 6.x主题变动概述
-
1,drupal主题现在也有了.info文件
-
2,drupal主题注册表
-
3,通过模板文件主题化
-
4,drupal模板管理
-
5,新的模板文件(.tpl.php)
-
6,新的模板命名建议
-
7,定义区块区域
-
8,区块区域变量名的改变
-
9,自定义主题设置
-
10,新的$signature变量
-
11,$body_classes变量
-
12,$language现在是一个对象了
-
13,drupal主题可以覆写内核或者模块定义的CSS文件
-
14,对RTL CSS的支持
-
15,“Submitted by user on date/time”这个也可以主题化了
-
16,jQuery升级到了1.2.3
-
17,默认的JavaScript文件
-
18,JavaScript主题化
drupal主题现在也有了.info文件
在Drupal5.x中,模块中包含了.info文件,用来存储该模块的原数据(比如,名称,描述,版本,依赖性,等等)。从Drupal6.x开始,主题也包含了.info file。更多信息可参看为主题编写.info文件一文
例如themeName.info(只列出部分信息):
name = Theme Name
description = One sentence description of theme.
core = 6.x
engine = phptemplate
drupal主题注册表
现在所有的函数都需要注册。在Drupal 5中,是不需要注册的。在Drupal 6.x中,新引入了hook_theme()函数,用来注册所有的可主题化的输出。PHPTemplate引擎负责注册,所以大多数时候,你都不需要手工注册。
-
有个例外。那些没有默认主题实现的表单,将不会被注册。
-
关于表单主题化的更多细节,可参看主题化手册中的例子。
- 非常重要的一点!每当你向你主题中添加一个新的主题函数或者模板时,必须清空注册表缓存!
通过模板文件主题化
在Drupal 5.x中,可以使用themeEngine_hook() 或者themeName_hook()来覆写默认的主题函数。你可以直接在template.php文件使用标识文本(markup),并将结果数据返回。
你还有另一种选择,就是使用_phptemplate_callback(),这样就允许主题函数使用单独的模板文件了(.tpl.php)。启用回调函数以后还允许钩子使用下面的方式操纵变量。
下面的代码在6.x中已不再被支持了:
<?php
function _phptemplate_variables($hook, $variables) {
switch ($hook) {
case 'page':
// process variables for page hook.
break;
case 'node':
// process variables for node hook.
break;
}
return $variables;
}
?>
在Drupal 6.x中,已不再支持_phptemplate_callback()了。它已经被整合到theme()函数中了。一旦函数注册为了一个模板,那么就会使用该模板文件。_phptemplate_variables()也不再被支持了。为了在Drupal 6.x中添加额外的变量,可参看预处理文档。
如果以普通函数来注册的话,这种方式就和drupal5.x中使用"themeEngine_hook()" 或者"themeName_hook()"来覆写一样了。
PHPTemplate自动的将钩子注册为一个普通函数或者一个模板。为了将函数注册为一个模板,你需要根据钩子名,创建一个".tpl.php"文件。例如,假如钩子为menu_tree,那么你drupal主题中的模板文件名就应该为menu-tree.tpl.php.注意,下划线改为了连字符。清空注册表,现在就可以了。
-
更多细节可参看覆写行为