为Drupal构建一个新主题

网文分类: 

主题解释了 Drupal 网站的用户界面 (UI)。虽然主题结构并没有明显的变化,但 Drupal 版本 7 配备了一个新的主题实现方法。本文演示了如何创建一个新的 Drupal 7 主题。

Drupal 主题的目标是将框架的处理逻辑和设计元素分开。为了做到这一点,Drupal 采用了一个复杂的主题系统,其中包括主题、主题引擎和挂钩。主题组件与 Drupal 核心系统和模块设计元素配合,创建具有独特外观的用户界面(单独 Drupal 页面和表单)。由于将 Drupal 的业务逻辑从它的表示逻辑中分离出来,使代码更易于维护,并且您无需重写代码层就可以交换出主题层的实现,反之亦然。图 1 说明了 Drupal 框架结构。

图 1. Drupal 框架结构

Drupal 框架结构的图形表示

主题显示 Drupal 核心通过底层主题引擎从数据库中提取的数据,主题引擎被用作 Drupal 核心和主题模板之间的接口。

主题引擎

主题引擎 是一种手段,主题通过此引擎与 Drupal 核心进行交互。有几个主题引擎可以与 Drupal 配合使用。最流行的是:

  • < >

    < >

    Plain PHP

  • Smarty Engine

其他 Drupal 主题引擎

与 Drupal 配合的还有其他几个常用主题引擎。它们包括PHPTAL、wgSmarty、Zengine、Awesomengine、ETS、Haml、XSLengine 和 Peroxide。不过,本文使用 PHPTemplate 引擎,因为它是默认的主题引擎,并且是与 Drupal 7 一起打包的惟一主题引擎。

如果您愿意,您也可以使用自己的自定义引擎。

PHPTemplate 主题引擎是默认的 Drupal 引擎,也是本文中所使用的主题引擎,它使用名称类似于filename.tpl.php 的单独主题文件作为 Drupal 的 theme_filename() 函数的主题。这些文件每个均包含面向动态数据的 HTML 框架以及 PHP 语句。因此,凭借 PHP 的基本知识,利用 PHPTemplate 就能轻松创建高级主题,因为这只涉及极少量的代码。

 

规划主题

主题是由若干个文件组件。文件的数量取决于主题的复杂性。一个主题可能只有三个文件,也可能会有几十个文件,包括放置在主题目录内若干个文件夹中的图形元素和各种脚本。图 2 显示了在主题主文件夹中预期可以找到的典型文件描述(颜色、图像、徽标、模板、样式和 PHP 文件)。

图 2. 主题文件夹的典型内容