如何摆脱Drupal CSS样式表?

时间:2010-02-26 08:56:14

标签: drupal drupal-6 drupal-modules drupal-themes

我正在尝试完成以下操作。我需要使用Drupal 6作为项目要求,但我希望将它与我自己的HTML和CSS样式表一起用于每个节点/视图/面板等。

问题是,无论主题如何,我总是发现Drupal将我的CSS内容和与所选主题相关的CSS应用于我的HTML内容。我也尝试过使用stylestripper模块(安装在sites / all / modules中),但没有成功。无论我做什么,我的页面都会应用额外的CSS样式表,完全破坏了我的布局。

实现这一目标的正确方法是什么?为什么stylestripper根本不起作用?是否有完全空白的主题?我已经尝试了基本的,母舰,禅等,但我总是看到应用于我的页面的其他CSS样式表。

这让我发疯,Drupal因其灵活性而被其他人选中。 提前谢谢。

3 个答案:

答案 0 :(得分:6)

<?php
/**
 * Helper function to allow easy CSS excludes + includes
 */
function _phptemplate_get_css($exclude = array(), $include = array()){
$css = drupal_add_css();
foreach ($css['all']['module'] as $k => $path) {
   $file = substr($k, strrpos($k, '/') + 1);
   if (in_array($file, $exclude)){
     unset($css['all']['module'][$k]);
   }
}
foreach ($include as $file){
   $css['all']['theme'][path_to_theme() .'/'. $file] = true;
}
return drupal_get_css($css);
?>

drupal.org了解详情。

<强>更新
放置此功能的适当位置在主题的template.php文件中。实际上,在您的情况下,您需要传递要排除的css文件名数组 在没有参数传递的情况下调用drupal_add_css()将为$css提供一系列CSS文件,这些文件将附加到您的主题。所以这是进入的最佳时机!

如您所见,在第一个foreach循环中,我们只是为传递的$css数组中存在的文件名寻找$exclude数组,以便删除样式。我们在第二个循环中执行相同的工作以进行样式插入。最后,我们返回所有样式的主题表示,这些样式应该使用drupal_get_css()函数附加到主题上。 (在你的情况下可能没什么)

那么,在哪里调用这个功能?您可以在_phptemplate_variables()中为D5调用此辅助函数,或在{6}中为D6调用此帮助函数。正如我们在D6 (未经测试)

中看到的那样
function YOUR_THEME_preprocess(&$vars, $hook){
    // Stylesheet filenames to be excluded.
    $css_exclude_list = array(
        'lightbox.css',
        'lightbox_lite.css',
    );

    // Making use of previously defined helper function.
    $vars['styles'] = _phptemplate_get_css($css_exclude_list);
}

我确定你知道如何排除'em all;)

答案 1 :(得分:1)

如果您使用与核心文件匹配的文件名在主题的.info文件中定义CSS和/或JavaScript文件,则覆盖它们,如果您的替换不存在,则不包括它们。

See the .info file for the Tao theme for an example

答案 2 :(得分:0)

我不会这样,但我认为只需删除主题page.tpl.php中的以下行

 <?php echo $styles ?>

然后drupal将不会有任何自己的风格。
这可能适合你。

<小时/> 尼茨