【问题标题】:How to get rid of Drupal CSS stylesheets?如何摆脱 Drupal CSS 样式表?
【发布时间】:2011-01-21 09:03:00
【问题描述】:

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

问题是,无论主题是什么,我总是发现 Drupal 适用于我的 HTML 内容,我的 CSS 样式表和与所选主题相关的 CSS。我也尝试过使用样式剥离器模块(安装在站点/所有/模块中),但没有成功。不管我做什么,额外的 CSS 样式表都会应用到我的页面上,完全破坏了我的布局。

实现这一目标的正确方法是什么?为什么样式剥离器根本不起作用?是否有完全空白的主题可用?我尝试过 basic、mothership、zen 等,但我总是看到其他 CSS 样式表应用于我的页面。

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

【问题讨论】:

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


    【解决方案1】:
    <?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 或 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);
    }
    

    我相信你知道如何排除他们所有的 ;)

    【讨论】:

    • 谢谢,这看起来很完美。您能否添加实际使用该功能所需的缺失细节?我应该把函数放在哪个文件中?如何调用它来排除所有的 CSS 样式表?
    • 太棒了!这正是我正在寻找的!感谢您分享这个!
    【解决方案2】:

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

     <?php echo $styles ?>
    

    然后drupal不会有任何自己的样式..
    这可能对你有用。


    尼兹

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-25
        • 1970-01-01
        • 1970-01-01
        • 2016-02-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-01
        • 1970-01-01
        相关资源
        最近更新 更多