Sep 14, 2012 -
前端
No Comments


unset css module for drupal7
用drupal做项目也4年多了,大大小小,简单的,复杂的项目做了无数。最想喷的就是drupal的css管理。就拿最基础的basci theme来举例,即便把basic.info里的css全注释掉:
页面里也还会有一堆其他module通过drupal_add_css()加进来的css,
<style type="text/css" media="all">@import url("http://ares/drupal7/modules/system/system.base.css?ma9ysv"); @import url("http://ares/drupal7/modules/system/system.menus.css?ma9ysv"); @import url("http://ares/drupal7/modules/system/system.messages.css?ma9ysv"); @import url("http://ares/drupal7/modules/system/system.theme.css?ma9ysv");</style> <style type="text/css" media="all">@import url("http://ares/drupal7/modules/comment/comment.css?ma9ysv"); @import url("http://ares/drupal7/modules/field/theme/field.css?ma9ysv"); @import url("http://ares/drupal7/modules/node/node.css?ma9ysv"); @import url("http://ares/drupal7/modules/search/search.css?ma9ysv"); @import url("http://ares/drupal7/modules/user/user.css?ma9ysv");</style>
虽然这些css最后都可以压缩掉,但作为一个有数据洁癖的处女男,还是很难忍受这种东西存在的。
这些css其实还好,都是原生drual自带的,并没有冲突。但在项目的进行中,我们会装很多第三方的module,这些module都隶属于不同的作者,web界语意化的单词又就那么几个,css冲突就在所难免了。(其实我这是在夸自己的css命名够语意化!^^)
好吧,现在来干掉这些碍眼的家伙吧!在drupal api里搜到一个方法hook_css_alter,这可以干掉这些碍眼的家伙。
1.在sites/all/modules/ 下新建一个文件夹 unsetcss
2.在sites/all/modules/unsetcss 下建立两个文本文件:unsetcss.info 和 unsetcss.module
代码如下,unsetcss.info:
name = Unsetcss description = Unsetcss package = Aresli core = 7.x php = 5.x
unsetcss.module :
<?php function unsetcss_css_alter(&$css) { // Remove defaults.css file. //unset($css[drupal_get_path('module', 'system') . '/system.base.css']); unset($css[drupal_get_path('module', 'system') . '/system.menus.css']); unset($css[drupal_get_path('module', 'system') . '/system.messages.css']); unset($css[drupal_get_path('module', 'system') . '/system.theme.css']); unset($css[drupal_get_path('module', 'comment') . '/comment.css']); unset($css[drupal_get_path('module', 'field') . '/theme/field.css']); unset($css[drupal_get_path('module', 'node') . '/node.css']); unset($css[drupal_get_path('module', 'search') . '/search.css']); unset($css[drupal_get_path('module', 'user') . '/user.css']); } ?>
3.启用这个module后,就只剩下 system.base.css 这一个css了
ps: system.base.css 不能去掉,否则后台样式会乱。
我不知道drupal里有没有更好的方法干掉这些css,但作为一个前端,我只能研究到这步了。