从接触 Drupal (一款优秀的开源 CMS 内容管理系统)到现在已经有半年多时间,期间自己对于 Drupal 的感觉还是经历了一些变化 ^_^ 从刚开始的感觉“一般”到现在的“欣赏”;最后,我不得不承认,Drupal 是一套如此优秀的系统,甚至早已超出了普通 CMS 的范畴,更多人喜欢叫 Drupal 为 CMF 内容管理框架。但作为一名网站前端人员,这里只能跟大家分享一些我在定制Drupal 主题风格时的一些收获和经验,希望能给已经加入,或者即将加入 Drupal 家庭的同行们一些启发和帮助,然后共同提高。
1、尽量灵活,不要把 div 写死,特别是宽度,因为 Drupal 有很多附加的模块,你不知道将来或许会添加什么样的模块,而这个模块的 CSS 风格又肯定不是你的习惯,虽然几乎所有模块的呈现部分都有主题函数可以覆写,但为十个模块覆写主题函数何不从主题上一开始就写的灵活呢,当然这几乎是制作所有 CMS 模板的基本需求,通常我会在整个页面的最外层,即紧跟 body 标签里面定义一个 div 然后给这个层像素宽度来限制整个页面的宽度,而页面里面所有的 div 使用 百分比 宽度,这一点可以拓展到 字体大小等;
2、参考官方,如果刚开始没有任何经验的时候不妨看看官方或者网上其他人发布的主题模板,但一定要选对参考对象,记得我第一次做模板时就是参考一个老外用 table 写的模板害我以为 Drupal 主题都是用 table 做的,结果走了很多弯路,其垃圾程度可想而知。其实系统安装时自带的 garland 是个非常不错的例子,只是我们自己写主题的时候不需要那么多的判断,原因看下一条;
3、能省则省,如果是仅仅给一个公司或者网站出的主题模板,主题里面用到的一些变量可以直接写成值,而不用再去调用各种变量如 logo 的图片和链接,没有必要写成 $logo 直接引用主题目录下的 logo.png 就可以了,还有如 站点语言 名称 调整色调 等,甚至是一些文本完全没有必要使用 t 函数包裹,毕竟 xhtml 还是比 php 输出要快的,另外一些模板文件如box.tpl.php block.tpl.php 或者 node.tpl.php 并不是必须的,如非必要,可以不用创建这几个文件,直接用模板引擎的就好,这样还能保持和 Drupal 的 Class 命名规则一致,如:http://www.smokefreehealthcare.org/ 这个站的模板我就只用了一个 page.tpl.php 模板文件;
4、尽量实战,这里的 实战 不是说就让你到目标站点上去修改,而是尽量让本地环境和目标网站一模一样,即使没有数据,配置和模块尽量还是要一样,特别是涉及 URL 的一些配置,因为 Drupal 在给一些区块或内容赋予的 class 和 id 会受你的设置影响 如 CCK 的一些字段、Views 的页面输出显示。或者干脆尽量不去用 Drupal 里面赋予的 class 和 id 而使用你在模板里面创建的 class 和 id 这也是为什么官方发布的模板几乎没有涉及覆写主题函数的例子,因为那会大大降低模板的通用性。
暂时且提这么四点,说起来简单,但实际操作起来还是需要多做项目,多练习!
不错,正在学了