You are here

Drupal主题化概述

一小部分手册页面被移到了新的主题化手册中了.我们为Drupal6以及以后版本提供了一个全新的手册.这个手册,当它完全过时后,最终将被作为新大纲中的子部分.主题升级指南也已经被移动了.

注意:本手册是从主题开发者的角度来描述drupal主题系统的。如果你是一个模块开发者,想将你的模块主题化时,你可以参看这个页面

 

 

drupal4.5开始,Drupal的主题系统就非常灵活了。此时便采用了新的结构---模板引擎,模板,样式表和PHP所构成;通过插入一些组件,可以很容易的形成你自己的主题。在Drupal 4.7drupal自带的默认主题引擎改为了PHPTemplate

下面是一些主题的构成结构:

主题

引擎(PHP

模板(XHTML

样式(CSS

 

 

 

 

Garland

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/themes3方主题)的子目录中。主题引擎将会在所有的子目录中寻找模板文件(.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 , Think in Drupal