You are here

对一个Drupal主题的剖析

 原文:http://drupal.org/node/171194

译者:葛红儒, Think in Drupal

 phptemplate theme:

theming requirements

.info (必须)

".info"文件是必须的,当Drupal 寻找你的主题时,要用到这个文件.在这里可以定义:元数据,样式表, JavaScripts,(区块)区域,以及其它.而其它文件则是可选的.

主题的内部名称也是由该文件衍生出来的.例如,如果它名为”drop.info”的话,那么在Drupal中,"drop"就是主题的名字。而在Drupal5以及更早的版本中,Drupal使用主题文件夹名作为主题的名字。

Info文件是Drupal6引入的新的特性。在Drupal5中,.info文件仅适用于模块。

 

模板文件(.tpl.php)http://drupal.org/node/190815

这些drupal模板文件,都是由xHTML和PHP变量构成的。在一些情况下,它们也可以输出其它的数据类型——比如xml rss。每个.tpl.php文件负责特定一块数据的输出,有时,根据suggestions (建议),它可以处理多个.tpl.php文件。模板文件是可选的,如果在你的主题中不存在的话,那末就会使用默认输出。注意,在这些文件中,不要包含复杂的业务逻辑。一般情况下,只需要包含xHTML标签和PHP变量。在内核和可选模块所在的目录中,存在着一些模板文件。将它们拷贝到你的主题目录下面,Drupal将会使用主题目录下的模板文件来代替模块里面的。

注意:theme registry(主题注册表)对可用主题数据信息进行了缓存。当你在你的drupal主题中添加或者删除模板文件(或者主题函数)时,你需要重置主题注册表,以清空缓存。

 

template.php

可将输出时所用到的所有条件逻辑和数据处理,都放到template.php文件中。该文件不是必需的,但是它能使.tpl.php文件保持整洁,在这里,可以对.tpl.php文件中的PHP变量进行预处理。定制函数,覆写的主题函数或者其它对原始输出的外观定制函数,都可以放到这里。这个文件开头必须是PHP开始标签"<?php",但是结束标签不是必须的,最好将其忽略。

 

Sub-themes (子主题)

在表面上,子主题和其它主题是一样的。唯一的区别是,它们继承了父主题的资源。为了创建一个子主题,在.info文件中必须包含"base theme"项。这样它就可以继承来自于父主题的资源了。继承可以是多重的;一个子主题可以是另一个子主题的父主题。对此没有进行限制,可以一直继承下去。

Drupal 5以及更低版本中,drupal子主题需要位于父主题下面的子目录里面。Drupal6中则没有这一限制。

 

其它

  • Logo和截图并不是必需的,但它是推荐使用的,特别是你想把你的主题贡献到Drupal资源库中时。截图应该展示主题的特色,比如包含管理页面和用户帐号设置,它可在设置了适当权限后来选择主题。
  • 当你需要管理UI设置或者logo、搜索、使命(mission)等等以外的“特性”时,可以使用"theme-settings.php"文件。这是一个高级特性。更多信息,可参看用户手册的高级设置(http://drupal.org/node/177868)。
  • 对于颜色模块(color module)的支持,需要一个"color"目录,里面放置"color.inc"文件,以及其它各种支持文件。

 

  • 如果你想将你的主题基于核心主题,可以使用子主题(http://drupal.org/node/225125),或者拷贝主题并将其重命名。直接修改Garland或者Minnelli是非常非常不好的,这是由于安装和升级过程中都要用到他们。
  • 所有主题都应该放在"sites/all/themes"目录下,以将其与核心文件区分开来。参看多站点安装(http://drupal.org/node/43816),可以了解到所有可以放置主题的目录。 
  • 子主题,它们的结构和继承

 

Drupal版本: