一小部分手册页面被移到了新的主题化手册中了.我们为Drupal6以及以后版本提供了一个全新的手册.这个手册,当它完全过时后,最终将被作为新大纲中的子部分.主题升级指南也已经被移动了.
注意:本手册是从主题开发者的角度来描述drupal主题系统的。如果你是一个模块开发者,想将你的模块主题化时,你可以参看这个页面。
从drupal4.5开始,Drupal的主题系统就非常灵活了。此时便采用了新的结构---模板引擎,模板,样式表和PHP所构成;通过插入一些组件,可以很容易的形成你自己的主题。在Drupal 4.7中drupal自带的默认主题引擎改为了PHPTemplate。
下面是一些主题的构成结构:
主题 |
引擎(PHP) |
模板(XHTML) |
样式(CSS) |
|
|
|
|
|
PHPTemplate |
.tpl.php |
.css |
Minelli |
.css |
||
Bluemarine |
.tpl.php |
.css |
|
Chameleon |
Chameleon.theme |
.css |
|
Marvin |
.css |
“主题”是一个抽象的东西,有多种方式可以生成主题:
-
使用模板引擎(PHPTemplate, XTemplate)和模板文件(.tpl.php, .xtmpl):比如Garland, Bluemarine。
-
使用样式表通过覆写已有模板或主题:比如Minelli, Marvin(子主题)。
-
使用包含了主题覆写函数的PHP .theme文件:比如Chameleon。
前面例子的目录结构如下所示:
themes/engines/phptemplate/phptemplate.engine
themes/garland/page.tpl.php
themes/garland/style.css
themes/garland/minelli/style.css
themes/bluemarine/page.tpl.php
themes/bluemarine/style.css
themes/chameleon/chameleon.theme
themes/chameleon/style.css
themes/chameleon/marvin/style.css
主题和模板放在themes目录(sites/all/themes第3方主题)的子目录中。主题引擎将会在所有的子目录中寻找模板文件(.tpl.php, .xtmpl)。如果主题目录下面存在一个style.css文件的话,它也将被使用。
你也可以仅仅使用CSS,在现有主题的基础上创建一个新的(子)主题,你需要将其放在原主题的子目录下面,在这个子目录下放置一个新的style.css文件。Drupal可以将新的样式,与原主题的模板联合起来,从而形成一个新的主题。这种主题的例子有Minelli 和Marvin。
最后,如果在主题目录下面有一个screenshot.png文件的话,Drupal将在主题管理界面中使用这个截图。
创建自定义主题
如果你想创建一个自定义主题的话,你可以选择修改一个已有主题,或者从头开始。
为了修改一个已有主题,将它拷贝到你的themes目录下,给它起个独一无二的名称。在drupal中,主题名不能与drupal的默认模块名,以及启用的第3方模块名重名。接着根据你的需要来修改这份拷贝。根据主题是基于模板的,还是给予.theme文件的,你可以选择使用PHP 或者XHTML/CSS来修改它。就像前面所讲的那样,如果你仅仅想修改一个主题的样式的话,你可以在该主题下面创建一个子目录,将自己的样式style.css放进去,这样在drupal中就形成了一个新的主题。
如果你想另起炉灶的话,那么也有多种方式可供选择。如果你不是一个程序员的话,那么最简单的方案就是使用一个模板引擎。Drupal 4.6及以前版本中,默认自带的主题引擎为XTemplate,它需要你使用特殊的标记创建一个(X)HTML骨架。更多信息可参看XTemplate文档。在Drupal4.7中,PHPTemplate成为了默认主题引擎,而XTemplate成为了一个第3方的主题引擎。
在drupal主题中,可以直接使用PHP代码。这种方法仍然可用,但与给予模板的主题相比,它更难用,维护起来也更加麻烦。
相关联接: http://drupal.org/node/11774 ,