如何在system.css和其他模块样式表之前加载主题的clear.css?

时间:2011-01-07 23:55:57

标签: css drupal

所以,我想使用CSS重置(例如http://bit.ly/gd2hQX)作为我正在组装的主题的一部分。这将帮助我避免使用用户代理默认值的各种麻烦。

我在mytheme.theme中尽职地提及clear.css,然后启用Drupal的CSS优化,以便将其加载到CSS缓存文件中,该文件将成为$scriptspage.tpl.php的一部分。

但是,Drupal在核心样式表之后加载了所有主题样式表,因此最终会覆盖管理页面上的许多填充,边距等,例如admin/build/modules/list。这是一种痛苦。

我知道我可以在<link rel="stylesheet">$scripts之前手动添加page.tpl.php,但后来我无法获得CSS优化的全部好处。

有没有办法在核心和模块样式表之前加载某些样式表?理想情况下,这可能发生在主题级别,但如果不可能,我会对替代方法感兴趣。

谢谢!

2 个答案:

答案 0 :(得分:2)

无法使用D6。使用D7,您可以实现hook_css_alter()。

然后你有 3 4种可能的解决方案:

  1. 仅在clear.css

  2. 中实施所需的重置
  3. 之前修补核心以包含您的内核
  4. 将自己包含在page.tpl.php中,别忘了使用:

    &LT; ?php print base_path()。 path_to_theme()。 '/my/file.css'; ?&GT;

  5. 使用您的clear.css然后使用

  6. 重写您删除的内容

    第三种解决方案会使您的文件无法聚合,但我怀疑使用D6您还有其他任何解决方案。

    第一个是最好的(适当的,更清洁的,考虑到框架),第二个是最丑陋的,请永远不要修补核心,你将让你的生活变得地狱!第3个会工作,但不会聚合。

    编辑:Drupal使主题开发人员的生活变得非常困难,因为核心和模块任意包含CSS文件,你总是被迫做适当的CSS覆盖来清除/重置你需要的东西。

    真的,使用第一个解决方案或第四个解决方案。我自己做第四个,清除所有,重置所有,然后重写所有你需要的东西。核心CSS文件不是强制性的,实际上,在大多数网站上你都没有什么可以重写的。

    不要忘记,在大多数情况下,您应该为admin和admin / *路径使用不同的主题,这至少会释放您必须重写完整的管理CSS特定主题的事实。

答案 1 :(得分:2)

Four Kitchens有一个blog post on Promiscuous stylesheets in Drupal 7,简要讨论如何在Drupal 6中完成此任务。然后以ninesixty_css_reorder function为例。