level 7
安利强宇(健康管理)
楼主
模板语言和主题引擎
用Drupal的行话来说,主题就是一组负责你站点外观的文件。你可以从http://drupal.org/project/Themes下载第 3方主题,或者你可以自己动手创建一个主题,后者正是你在本章将要学习的。作为一个web设计者,主题由你所熟悉的大部分内容所组成:样式表,图 片,JavaScript文件,等等。你将发现,在Drupal主题和纯HTML站点之间的区别就是模板文件。这些文件一般都包含大段的静态HTML,和 一些小段的用来插入动态内容的代码。它们负责你站点的一个特定部分的外观。模板文件的语法依赖于它所使用的主题引擎。
构建一个PHPTemplate主题
创建一个主题,可以有多种方式,这取决于你的起始材料。假定你的设计者已经为你的站点提供了HTML和CSS文件。那么将设计者的设计转化为一个 Drupal主题,到底难不难呢?它实际上不是很难,而且你能够轻易的完成工作的80%。不过还有20%—最后的难点了—它是 Drupal主题制作高手与新手的分水岭。首先让我们从简单的部分开始。这里有个概括:
为站点创建或修改HTML文件
为站点创建或修改CSS文件
创建一个.info文件,来向Drupal描述你的新主题。
按照Drupal的标准为文件命名。
在你的模板中,插入可用的变量。
为单独的节点类型,区块,等等创建模板文件。
每个theme至少包含一个描述文件.info,其它如果没有则使用系统默认文件。主要包括模板文件,CSS文件等。
理解Drupal自带模板文件template.php
每个theme都可以包含一个template.php文件,用来包含逻辑代码,这个文件Drupal会自动载入的,我认为这个文件相对于 Drupal模块的.module文件一样。其实一个theme和一个module非常相似,例如.info文件的写法以及template文件 和.module文件的写法非常相似。
所以我可以在template.php文件里,我们可以实现hook_theme等,此时你就认为theme是一个module好了。
theme机制介绍
当Drupal想要为一个可主题化的项目(比如节点,区块,面包屑,评论,或者用户签名)生成一些HTML输出时,它将查找用来为该项目生成 HTML的主题函数或者模板文件。Drupal的所有部分,基本上都是可主题化的,这意味着,对于为该项目实际生成的HTML,你可以进行覆写。
Drupal的主题系统背后的核心哲理和钩子系统的类似。通过遵循命名规范,就可以标识出哪些函数是主题相关的函数,它们负责格式化并返回你站点的内容,或者使用模板文件负责输出HTML内容。
因此我们要输出内容时一定要用theme机制实现,方便维护扩展,实现一个theme输出主要有以下几个步骤:
实现hook_theme(),目的是注册我们的theme,会被写入theme注册表,当调用theme(‘themename’)时会去theme注册表查找该theme。
使用函数或模板输出内容。函数以theme_开头,例如theme_breakcrumb()。如果是模板文件则以.tpl.php结尾
实现hook_preprocess_HOOK来为我们的输出theme输出准备变量,这步不是必须的。
其它开发人员如果要覆盖你的输出,则在他们的theme中按照一定的规则来覆盖。
下面将详细介绍整个过程,我们假定创建了helloTheme的theme,以及helloModule的module,用于展示我们的代码。
theme_hook介绍
theme_hook通常在module中实现,事实上我们也可以在theme实现theme_hook,例如helloTheme_theme()。因为我们之前说过一个theme某种程度上来说就是一个module。
(待续……)
2014年05月25日 01点05分
1
用Drupal的行话来说,主题就是一组负责你站点外观的文件。你可以从http://drupal.org/project/Themes下载第 3方主题,或者你可以自己动手创建一个主题,后者正是你在本章将要学习的。作为一个web设计者,主题由你所熟悉的大部分内容所组成:样式表,图 片,JavaScript文件,等等。你将发现,在Drupal主题和纯HTML站点之间的区别就是模板文件。这些文件一般都包含大段的静态HTML,和 一些小段的用来插入动态内容的代码。它们负责你站点的一个特定部分的外观。模板文件的语法依赖于它所使用的主题引擎。
构建一个PHPTemplate主题
创建一个主题,可以有多种方式,这取决于你的起始材料。假定你的设计者已经为你的站点提供了HTML和CSS文件。那么将设计者的设计转化为一个 Drupal主题,到底难不难呢?它实际上不是很难,而且你能够轻易的完成工作的80%。不过还有20%—最后的难点了—它是 Drupal主题制作高手与新手的分水岭。首先让我们从简单的部分开始。这里有个概括:
为站点创建或修改HTML文件
为站点创建或修改CSS文件
创建一个.info文件,来向Drupal描述你的新主题。
按照Drupal的标准为文件命名。
在你的模板中,插入可用的变量。
为单独的节点类型,区块,等等创建模板文件。
每个theme至少包含一个描述文件.info,其它如果没有则使用系统默认文件。主要包括模板文件,CSS文件等。
理解Drupal自带模板文件template.php
每个theme都可以包含一个template.php文件,用来包含逻辑代码,这个文件Drupal会自动载入的,我认为这个文件相对于 Drupal模块的.module文件一样。其实一个theme和一个module非常相似,例如.info文件的写法以及template文件 和.module文件的写法非常相似。
所以我可以在template.php文件里,我们可以实现hook_theme等,此时你就认为theme是一个module好了。
theme机制介绍
当Drupal想要为一个可主题化的项目(比如节点,区块,面包屑,评论,或者用户签名)生成一些HTML输出时,它将查找用来为该项目生成 HTML的主题函数或者模板文件。Drupal的所有部分,基本上都是可主题化的,这意味着,对于为该项目实际生成的HTML,你可以进行覆写。
Drupal的主题系统背后的核心哲理和钩子系统的类似。通过遵循命名规范,就可以标识出哪些函数是主题相关的函数,它们负责格式化并返回你站点的内容,或者使用模板文件负责输出HTML内容。
因此我们要输出内容时一定要用theme机制实现,方便维护扩展,实现一个theme输出主要有以下几个步骤:
实现hook_theme(),目的是注册我们的theme,会被写入theme注册表,当调用theme(‘themename’)时会去theme注册表查找该theme。
使用函数或模板输出内容。函数以theme_开头,例如theme_breakcrumb()。如果是模板文件则以.tpl.php结尾
实现hook_preprocess_HOOK来为我们的输出theme输出准备变量,这步不是必须的。
其它开发人员如果要覆盖你的输出,则在他们的theme中按照一定的规则来覆盖。
下面将详细介绍整个过程,我们假定创建了helloTheme的theme,以及helloModule的module,用于展示我们的代码。
theme_hook介绍
theme_hook通常在module中实现,事实上我们也可以在theme实现theme_hook,例如helloTheme_theme()。因为我们之前说过一个theme某种程度上来说就是一个module。
(待续……)