使用drupal主题覆写函数
很多Drupal资料都讲解了,如何通过覆写主题函数,来真正的完成定义,从而得到你想要的外观.由于你需要创建一个函数,所以它需要一点PHP知识,尽管如此,这样做还是非常强大的.这里有许多代码片断和例子可供选择,许多情况下你只需要拷贝粘贴并做些细小的改动就可以了.
使用哪个文件
很多Drupal资料都讲解了,如何通过覆写主题函数,来真正的完成定义,从而得到你想要的外观.由于你需要创建一个函数,所以它需要一点PHP知识,尽管如此,这样做还是非常强大的.这里有许多代码片断和例子可供选择,许多情况下你只需要拷贝粘贴并做些细小的改动就可以了.
使用哪个文件
好了,让我们做个试验。请确定你已经将新主题设为了drupal默认主题了。
这里要做的就是为了,让读者更好的浏览你的站点。一个关键的建议就是让你的边栏元素和主内容区域区别开来。好的,让我们试着做一下:我们把我们所有的区块都使用Garland的 "header top"颜色作为背景色。记住,它的参考颜色为"#2385c2"。
.block {
background-color: #2385c2;
}
Steven Wittens写了一篇非常有名的文章“集成Color.module”,但是它对于许多Drupal开发者来说,有点抽象。所以,我想写点更具体的。
我还打算使用“主题化概述”里面的经常被忽视的一些信息,从而使升级更加容易一些。
创建你自己的drupal主题
在Drupal的管理界面中,每个drupal主题都有自己的设置页面admin/build/themes/settings/themeName,在这里你可以配置标准设置比如“Logo image settings” 和“Shortcut icon settings”.
你可以使用本节所讲的方法,来为该页面表单添加额外的设置,从而完成对drupal主题的定制.
To add color.module support, see the Integrating with Color.module section.
相关的Drupal 5.0 API 变化
下面列出的是Drupal 5.0中与主题有关的API接口变化,如果你的主题中用到了下面的函数,都要进行相应的更新才能在5.0下正常工作:
$primary_links 与 $secondary_links 变量现在返回了结构化的链接
新增 drupal_add_css() 函数,用来添加CSS文件
新的 $feed_icon, 显示聚合图标
新的clearing类
theme_links() 改为返回链接列表
新增 drupal_add_js() 函数,用来添加javascript脚本
_phptemplate_callback 函数签名改变了
id='pager' 现在为 class='pager'
theme_form_element 的参数修改了。
详情请参看:http://drupalchina.org/node/1679
$body_classes变量
在page.tpl.php中,可通过下面的方式得到布局的状态:
在Drupal5.x中,<?php print $layout; ?>将根据当前所用的边栏输出左栏(left),右栏(right),或者全部(both)。
在Drupal6.x中,还可以使用$body_classes。<?php print $body_classes; ?>将会输出类似下面的东西:
front logged-in node-type-page no-sidebars
模板管理
现在,可以将模板文件放到主题下面的子目录中,这样管理起来就更方便了。PHPTemplate引擎将查找主题目录下的所有文件,并将它们的位置登记器来。对于文件夹的嵌套深度则没有限制。
新的模板文件(.tpl.php)
在drupal5.x中,phptemplate.engine实现了下面的模板(在drupal题引擎文件夹下):