代码之家  ›  专栏  ›  技术社区  ›  Massimo Cafaro

如何摆脱drupal css样式表?

  •  9
  • Massimo Cafaro  · 技术社区  · 16 年前

    我正在努力做到以下几点。我需要使用drupal 6作为项目需求,但是我想在每个节点/视图/面板等的html和css样式表中使用它。

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

    实现这一目标的正确方法是什么?为什么stylestripper根本不工作?有没有完全空白的主题?我试过basic,mothership,zen等,但我总是看到额外的css样式表应用到我的页面上。

    这让我发疯了,Drupal被其他人选中是因为它的灵活性。 提前谢谢你。

    3 回复  |  直到 14 年前
        1
  •  6
  •   sepehr GR7    16 年前
    <?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() 功能。 (也许对你来说什么都没有)

    那么,在哪里调用这个函数呢?您可以在中调用此helper函数 _phptemplate_variables() 对于D5或 YOUR_THEME_preprocess() 对于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);
    }
    

    我相信你知道如何排除它们;)

        2
  •  1
  •   Simon Quentin    14 年前

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

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

        3
  •  0
  •   Nitz    16 年前

    我不这样做,但我认为只要删除主题页面中的以下行即可。

     <?php echo $styles ?>
    

    然后Drupal就不会有自己的风格了。
    这可能对你有用。


    尼茨