你现在的位置:首页 > PHP网站建设知识库 > Drupal > 正文

Drupal主题文件介绍

一个Drupal主题就是一些定义前端页面展示的一些文件的集合。你也可以为该主题添加“子主题”(sub-themes)或者修改这个主题。只有.info文件是必需的,但是通常情况下,每个主题都包含很多其他文件;下图展示了典型的主题及子主题中的文件结构。

Drupal 6

\

Drupal 7

\

.info

唯一的绝对必需文件,包含了整个主题的元数据(meta data)、样式表(CSS)、脚本(JavaScript)、区块位置定义等信息;这些信息都是必要的。有些相当于Joomla模板中的templateDetails.xml文件。

同时呢,主题的系统内部名称也是通过这个文件定义的。如果我们将.info文件命名为“drop.info”,那么在后台里面,系统就会将当前模板标识为“drop”。

需要注意的呢,是Drupal 6与5在.info文件方面有重要的区别,对于Drupal 5,该文件只用来做模块方面的事情。

template files(.tpl.php)

这些以.tpl.php为后缀的文件就是“模板”文件了,用来定义不同类型页面(page)或节点(node)等的xHTML和PHP的输出。有时呢它们还可以定义其他类型的数据,比如xml rss。

每一个模板文件都负责一个可定制的输出部分,比较常用的一种手法是通过suggestions机制进行多模板文件自动匹配覆盖;这部分内容将来我们会说到。

几乎所有的模板文件都是由简单直接的xHTML标记与PHP变量构成,我们可以很方便的针对自己的输出需求进行编辑。和其他拥有模板覆盖机制的CMS相同,在Drupal系统中原生包含这些模板文件,而存在于当前主题文件夹中的模板文件即是用作模板输出覆盖的。

需要注意的是,主题注册机制(theme registry)会缓存主题的数据信息,每当我们添加或修改了主题文件或功能的时候都需要清空缓存;Zen主题会帮助我们在每次修改之后自动搞定这个问题,对主题开发工作很有帮助。

template.php

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


Sub-themes (子主题)

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