drupal page.tpl.php,drupal的Page.tpl.php

本文介绍了如何在Drupal中根据不同的页面位置和路径切换主题、使用特定模板和CSS。通过检查变量如$is_front和arg()函数,可以确定当前页面是否为首页、分类页等,并据此加载对应的模板文件(如front.tpl.php、admin.tpl.php)和CSS。通过这种方式,可以实现为不同部分定制不同的视觉样式。
摘要由CSDN通过智能技术生成

你可以为单篇文章、URL路径、分类术语、章节、和你的首页定制主题。

一种方式是使用sections module,来为你站点的不同部分使用不同的主题。然而,如果你的自定义主题或者模块拥有自己的主题模板文件的话,比如event(事件)模块,它需要许多重复的CSS和图片资源。

在一个Drupal站点上使用多个主题的关键是,由主题引擎决定当前你在站点中所处的位置。下面是我们可以从模板引擎中检查的一列条件。

$is_front phptemplate变量可用来检查当前是否处于首页。

if ($is_front) {

include('front.tpl.php');

return;

}

?>

Drupal的arg()函数用来得到路径中的参数。

arg(0)=="admin"// is /admin

arg(0) =="node"// is /node

arg(0)=="user" // is /user

arg(0)=="node"&&arg(1)=="add" // is /node/add

arg(0)=="node"&& arg(2)=="edit" // is /node/###/edit

arg(0)=="user"&&arg(1)=="add" // is /user/add

arg(0)=="admin"&&arg(1)="user"&&arg(2)=="create" // is /admin/user/create

arg(0)=="alias"&&arg(1)=="alias1" is /alias/alias1

arg(0)=="taxonomy"&&arg(1)=="term"&&arg(2)=="term#" // is /taxonomy/term/term#

//arg(1)=="comment"

//arg(2)=="reply"

一旦你知道了front_page的值,或者路径,那么我们就可以使用不同的主题模板,也可使用CSS文件,或者修改xHTML标签的CSS类了。本节将分成3个子页面。

1,使用一个特定的模板,比如front.tpl.php, admin.tpl.php, term#.tpl.php。

if ($is_front) {

include 'front.tpl.php';

return;

}

elseif (arg(0)=="taxonomy"&&arg(1)=="term"&&arg(2)=="term#") { // add argument of choice

include 'term#.tpl.php';// add template of choice

return;

}

2,另一种选择是,为站点的不同部分使用不同的CSS。在下面的例子中,我们将基于路径来决定当前所在的位置,然后使用不同的CSS。在下面的例子中,我们决定要添加哪一个CSS。

if ($is_front) {

include 'page_front.tpl.php';

return;

}

if ($node->type == 'nodetype') { // all pages on my site are 'nodetype'

$my_path = explode("/", drupal_get_path_alias('node/'.$node->nid)); // all pages have path like 'section/page'

$my_path = $my_path[0];

} else {

$my_path = arg(0);

}

switch ($my_path) {

case 'using':

$section = 1;

break;

case 'education':

$section = 2;

break;

case 'company':

$section = 3;

break;

case 'image':

$section = 4;

break;

case 'forum':

$section = 5;

break;

default:

$section = 0;

}

$css_section = 'section'.$section;

?>

3,我们也可以为要被主题化的xHTML直接添加CSS类。

PHPTemplate 主题:

在page.tpl.php的body标签中(来自于bluemarine):

将变为:

接着你就可以为管理页面使用.admin作为css父选择器了。

对于Smarty

在page.tpl的body标签中(来自于bluemarine_smarty):

将变为:

当查看根节点时,这可能产生一个空的class属性值---可以在class中包含一个固定的前缀,从而阻止这种情况的发生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值