2009年1月14日星期三

不加载模块带的css文件

制作调试Dupal主题时经常会遇到系统模块自带的css文件带来的麻烦,最初的做法是从新定义相关的样式属性,后来看到Advanced Theme Construction Kit (ATCK)才长了见识,会发现原来可以这样。

来学习怎样不加载模块带的css文件

一、在主题的template.php中增加:

function atck_styles() {
 $css = drupal_add_css(path_to_theme() .'/page-layout.css', 'theme', 'all');
 $css = drupal_add_css();
 unset($css['all']['module']['modules/node/node.css']);
 unset($css['all']['module']['modules/system/defaults.css']);
 unset($css['all']['module']['modules/user/user.css']);
 return drupal_get_css($css);
}

注意:如果你使用该代码测试,请将:
function atck_styles()替换为
function 你的主题名字_styles()

二、修改主题的page.tpl.php

将:<?php print $styles ?>替换为:<?php print 你的主题名字_styles() ?>

总结:

如果想不加载某个非drupal系统模块,如:tagadelic 模块,修改:

function atck_styles() {
 $css = drupal_add_css(path_to_theme() .'/page-layout.css', 'theme', 'all');
 $css = drupal_add_css();
 unset($css['all']['module']['modules/node/node.css']);
 unset($css['all']['module']['modules/system/defaults.css']);
 unset($css['all']['module']['modules/user/user.css']);
unset($css['all']['module']['sites/all/modules/tagadelic/tagadelic.css']);
 return drupal_get_css($css);
}

其sites/all/modules/tagadelic/tagadelic.css的路径是相对于base_path()
另外有点不明白作者为什么使用$css = drupal_add_css(path_to_theme() .'/page-layout.css', 'theme', 'all');来增加css文件,而不使用.info文件。
相关参考:drupal_add_css drupal_get_css path_to_theme()

没有评论: