Drupal 7与Drupal 6比较之主题变化

Dupal 7与Drupal 6在主题方面有很大的变化,Drupal 6主题好多朋友比较熟悉,对于Drupal 7新主题的变化,在此和大家一起分享和交流。列举如下:

一、在html.tpl.php的开始部分RDFa请求有些变化
1.Drupal7能够在html.tpl.php.输出RDFa请求有以下变量
2.老的lang属性应该被改成compatibility with XHTML 1.1,仅仅xml:lang应该保留。
3.RDF命名前缀通过HTML文档在html标签中序列化以及被包含在$rdf_namespaces变量中。
4.GRDDL资料应该在<head> 标签内标明
6.x
<code><!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" xml:lang="<?php print $language->language ?>" lang="<?php print $language->language ?>" dir="<?php print $language->dir ?>"> <head></code>
7.x
<code><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?phpprint$language->language ?>" dir="<?php print $language->dir ?>" <?php print $rdf_namespaces ?>> <head profile="<?php print $grddl_profile ?>"></code>

二、删除了Box.tpl.php模板文件
之前的box.tpl.php 模板文件被删除。这部分内容现在有它们自己的函数。搜索结果列表选择仅仅用的是heme('search_results') 主题化,代替之前附加在box里。来自Box的评论主题化用theme_comment_form_box() 主题函数。

三、变量改成区域或更名
1.$help
drupal7中默认的区域(左,右,内容,头部,尾部)之外,加了一个新的帮助区域。相当于之前在drupal6下page.tpl.php 中的$help变量输出的内容。
2.$mission
被定义成'highlighted' 区域
3.$footer_message
尾部信息可以通过尾部区域来显示。在主题说明文件中输出regions[footer] = Footer
4.$closure
变成 $page_bottom, 新的 $page_top 和隐藏区域。Drupal6中提供一个特殊的变量$closure,应该放在HTML页面BODY标签底部和可以用过theme_footer()(在模块中用hook_footer()钩子来实现)被主题化。为了在不同的页面区域统一成一种方式,drupal7在区域中标准化并且在 page_bottom区域中放置$closure特别变量。同样page_top也是以page_bottom相对应添加。在drupal7里你需要在HTML页面BODY标签顶部输出$page_top,在底部输出$page_bottom。
Drupal 6:
<code><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">...
<body class="<?phpprint$body_classes;?>">
...
<?phpprint$closure;?>
</body>
</html></code>
Drupal 7:
<code><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
...
<body class="<?php print$classes;?>">
<?php print$page_top;?>...
<?phpprint$page_bottom;?>
</body>
</html></code>
如果你定制区域,需要记住非常重要的一点就是在你的区域设定中包括page_top 和page_bottom 区域
<code>theme .info file extract:
regions[content] = Content
regions[help] = Help
regions[page_top] = Page top
regions[page_bottom] = Page bottom</code>

5.$left 和 $right 改成$sidebar_first 和$sidebar_second
6.x
<code><?phpif (!empty($left)):?>
<div id="sidebar-left" class="column sidebar">
<?phpprint$left;?>
</div>
<!-- /sidebar-left -->
<?phpendif;?> ...
<?phpif (!empty($right)):?>
<div id="sidebar-right" class="column sidebar">
<?phpprint$right;?>
</div>
<!-- /sidebar-right -->
<?phpendif;?></code>
7.x
<code><?phpif ($sidebar_first):?>
<div id="sidebar-first" class="column sidebar"><div class="section region">
<?phpprint$sidebar_first;?>
</div></div>
<!-- /.section, /#sidebar-first -->
<?phpendif;?>
<?phpif ($sidebar_second):?>
<div id="sidebar-second" class="column sidebar"><div class="section region">
<?phpprint$sidebar_second;?>
</div></div>
<!-- /.section, /#sidebar-second -->
<?phpendif;?></code>

6.$picture 变成 $user_picture, 以及CSS名称'picture' 改成 'user-picture'
Drupal 6 (user-picture.tpl.php):
<code><div class="picture"> <?phpprint$picture;?></div></code>
Drupal 7:
<code><?phpif ($user_picture):?> <div class="user-picture"> <?phpprint$user_picture;?> </div><?phpendif;?></code>

7.$primary_links改成$main_menu,$secondary_links改成$secondary_menu
6.x: page.tpl.php
<code><div id="menu"> <?phpif (isset($secondary_links)) {?><?phpprinttheme('links',$secondary_links, array('class'=>'links','id'=>'subnavlist'));?><?php}?> <?phpif (isset($primary_links)) {?><?phpprinttheme('links',$primary_links, array('class'=>'links','id'=>'navlist'))?><?php}?> </div></code>
7.x: page.tpl.php
<code><div id="menu"> <?phpif (isset($secondary_menu)) {?><?phpprinttheme('links',$secondary_menu, array('class'=>'links','id'=>'subnavlist'));?><?php}?> <?phpif (isset($main_menu)) {?><?phpprinttheme('links',$main_menu, array('class'=>'links','id'=>'navlist'))?><?php}?> </div></code>

8.$taxonomy改成$terms
6.x
<code><?phpif ($taxonomy):?> <div class="terms"><?phpprint$terms ?></div> <?phpendif;?></code>
7.x
<code> <?phpif ($terms):?> <div class="terms"><?phpprint$terms ?></div> <?phpendif;?></code>

8.在block.tpl.php中重命名$block->content 为$content。

四、CSS选向名改变
1.区块的ID选择符
许多在drupal 7核心代码中把区块的CSS ID选择符定义成更加可以明确表达区块意思的名称。
用户登录区块
老的CSS ID (Drupal 6): block-user-0
新的 CSS ID (Drupal 7): block-user-login

2.clear-block类选择标签被定义成 clearfix。
在Drupal 6中<div class="clear-block"> 改成<div class="clearfix">就成.

taxonomy: