将drupal 6.x主题升级到drupal 7.x上
Drupal7.x主题变动概述
- 区块的CSS ID更加人性化,语义更丰富
- 一级和二级链接现在成了主菜单和次级菜单
区块的CSS ID更加人性化,语义更丰富
Drupal7.x主题变动概述
区块的CSS ID更加人性化,语义更丰富
首先,将xtemplate.xtmpl改名为original.xtmpl,这样这个主题就不再是xtemplate主题了.
创建page.tpl.php
最简单的方式是使用一个自定义图片来直接替换/misc/feed.png文件.如果不能这样做的话,你可以使用PHP来覆写默认的XML图标.
对于一个兼容PHPTemplate的主题,使用下面的步骤,你就可以轻松的将图标替换为你自己的(不仅仅是边栏区块中的,对于页面底部的也同样适用).本文基于如何覆写一个主题函数的步骤.
可以通过覆写theme_stylesheet_import()函数来忽略drupal.css文件.只需要向主题的template.php文件中添加以下代码:
<?php
/*
Do not include drupal's default style sheet in this theme !
*/
function phptemplate_stylesheet_import($stylesheet, $media = 'all') {
if (strpos($stylesheet, 'misc/drupal.css') == 0) {
return theme_stylesheet_import($stylesheet, $media);
}
}
?>
下面这个例子,讲述了在drupal中,如何使用主题函数来隐藏元素.这个例子向你展示了如何隐藏节点创建页面生成的日志消息.它将永远的隐藏日志消息盒子(box),所以,如果你将来需要用到这个盒子的话,就不能使用这段代码了.
<?php
/**
* Override node form
*/
function phptemplate_node_form($form) {
// Remove 'Log message' text area
$form['log']['#access'] = FALSE;
return drupal_render($form);
}
?>
Drupal内置的CSS聚合工作原理是,在"files/css"文件夹下,创建一个聚合文件,可以创建多个这样的聚合文件,比如当一个css文件在特定页面不需要时,而在另一个页面则用得到,这时就会新建一个聚合文件,通过$styles变量将其输出到page.tpl.php中。然而,这种方式对于部分人是行不通的,例如,将drupal运行在多台前台终端服务器上,但是却没有共享的"files"文件夹(它们可以与主服务器进行同步,而编辑则向主服务器添加内容),并且启用了缓存。在这种情况下,在部分前台终端服务器上css就显示不出来了,这是由于返回的是缓存页面,而没有检查css文件是否存在。
Drupal 6.x提供了一种内置的phptemplate方式,对站点离线后的维护页面进行主题化---参看http://drupal.org/node/195435.
在Drupal 5.x中,许多帖子建议通过修改内核为该页面定制主题,但是这种想法很臭,而且没有必要,当然最后的结果也不一定好.下面是由Nax(http://drupal.org/user/25511)提出的一些比较好的方式,每种方式都有自己的优点: