You are here

drupal4.6

使用drupal主题覆写函数

g089h515r806 的头像
Submitted by g089h515r806 on 星期三, 2008-09-17 02:43

很多Drupal资料都讲解了,如何通过覆写主题函数,来真正的完成定义,从而得到你想要的外观.由于你需要创建一个函数,所以它需要一点PHP知识,尽管如此,这样做还是非常强大的.这里有许多代码片断和例子可供选择,许多情况下你只需要拷贝粘贴并做些细小的改动就可以了.

 

使用哪个文件

template.php:覆写其它drupal主题函数

g089h515r806 的头像
Submitted by g089h515r806 on 星期六, 2008-09-13 02:13

如果你要覆写的主题函数不包含在基本列表中(block, box, comment, node, page),你需要将它告诉给PHPTemplate.

 

为了实现这一点,你需要在你主题目录下,创建一个template.php文件.这个文件以PHP开始标签<?php,但是这里不需要结束标签,推荐你不要使用结束标签.还有,在文件中,还需要包含用于主题覆写的存根(stubs),这些存根告诉引擎使用哪个模板文件,以及向其中传递哪些参数.

 

Page.tpl.php(drupal默认模板)

g089h515r806 的头像
Submitted by g089h515r806 on 星期三, 2008-09-10 12:41

默认模板

下面是Drupal 5的bluemarine主题的page.tpl.php模板,让你对页面模板文件有个实际的认识。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="<?php print $language ?>" xml:lang="<?php print $language ?>">

节点摘要(teaser)的drupal主题化

g089h515r806 的头像
Submitted by g089h515r806 on 星期三, 2008-09-10 02:31

你可以在drupal主题的node.tpl.php模板文件中使用下面的条件语句,来为摘要创建一个独特的外观:

<?php
if ($teaser) {
//if node is being displayed as a teaser
//Anything here will show up when the teaser of the post is viewed in your taxonomies or front page
} else {
//all other cases
//Anything here will show up when viewing your post at any other time, e.g. previews
?>

 

根据drupal节点类型对节点进行主题化

g089h515r806 的头像
Submitted by g089h515r806 on 星期二, 2008-09-09 13:42

模板文件node.tpl.php适用于所有类型的节点的主题化.这个文件覆盖了所有的节点类型,你可以按照手册的node.tpl.php页面的说明,对这个文件进行修改.为了对单独的节点类型分别进行主题化,你需要在你的主题文件夹下面创建一个node-$type.tpl.php文件,其中$type是节点类型的名称,从而为每种类型按照需要自定义主题.一些例子:

 

drupal首页判断,用$page==0 还是 $is_front?

g089h515r806 的头像
Submitted by g089h515r806 on 星期二, 2008-09-09 00:14

如果你打算使用$is_front来检查当前页面是不是展示的单个节点的话,这里有篇好的帖子(尤其是帖子下面的评论更值得一读),讨论了变量$page和$is_front的不同.

 

只有当你处在drupal站点的首页时,变量$is_front才被设置,也就是为真,而当你处在其它页面时,$is_front为假。对于普通的节点列表页面,比如当你点击一个drupal分类术语后所得到的节点列表页面,在这里$is_front就为假(false)。

 

页面

Subscribe to RSS - drupal4.6