drupal 7 移除自带的 css 和 javascript 及 jQuery.extend(Drupal.settings,

作者: 杨圣亮 分类: drupal 发布时间: 2018-03-24 22:42:35

不论是drupal 7还是drupal 8,   创建主题时,默认带有大量的css和 javascript文件。这些后台的css和javascript 严重影响了性能,甚至会和主题产生冲突,并且,不美观,试问,一个网页突然多了20多个js引用,谁看了也会不舒服,更重要的我们希望掌控一切,而不是充斥着大量不想要的内容,于是想办法移除这些资源,让其不显示在网页上。查阅drupal 7 的文档,知道有 theme_css_alter 和 theme_js_alter两个方法可以过滤css 和javascript。还有这玩意:

<script type="text/javascript">    
<!--//--><![CDATA[//><!--    
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"littleblog","theme_token":"XrVlQdHzCCFBwkNmu2XO1RQiFInfhIwjNH2ldq5cLSw","js":[]},"urlIsAjaxTrusted":{"\/node?destination=node":true}});    
//--><!]]>    
</script>

使用方法,在主题根目录下创建一个:template.php  文件,加入以下代码,整个世界都清静了,网页再也没有多余的css或javascript文件资源了,对网页加载速度是有好处的。

//过滤自带的css
function littleblog_css_alter(&$css)
{
    foreach ($css as $c) {
        if (strpos($c['data'], 'modules/') !== false) {
            unset($css[$c['data']]);
        }
    }
}

//过滤自带的javascript文件

function littleblog_js_alter(&$js)
{
    foreach ($js as $j) {
        if (is_string($j['data']) && (strpos($j['data'], 'misc/') !== false || strpos($j['data'], 'languages/') !== false)) {
            unset($js[$j['data']]);
            unset($js['settings']);
        }
    }
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

7  +  2  =  

微信