停止在Joomla 2.5中加载自动脚本

时间:2012-12-07 06:42:03

标签: joomla

Joomla 2.5中,以下脚本会自动加载。

<script src="/media/system/js/mootools-core.js" type="text/javascript"></script>
<script src="/media/system/js/core.js" type="text/javascript"></script>
<script src="/media/system/js/caption.js" type="text/javascript"></script>
<script src="/media/system/js/mootools-more.js" type="text/javascript"></script>
<script src="/templates/pswedge/js/jquery.min.js" type="text/javascript" defer="defer"></script>

我不想加载这些文件。如何删除这些链接?

3 个答案:

答案 0 :(得分:8)

我不建议你更改Joomla.But的核心文件,如果你真的需要那么你可以试试这个:

步骤在joomla模板中禁用预加载的脚本文件。

第一步:使用您喜欢的文件编辑器,打开进行编辑:

  

/libraries/joomla/document/html/renderer/head.php

第一步:在第151行处找到此代码,并将其更新为包含以下代码:

// Generate script file links
foreach ($document->_scripts as $strSrc => $strAttr)
{
    // Code to disable mootools for your site (still loads it for your admin)

    $ex_src = explode("/",$strSrc);
    $js_file_name = $ex_src[count($ex_src)-1];
    $js_to_ignore = array("mootools-core.js","mootools-more.js","core.js","caption.js");
    if( in_array($js_file_name,$js_to_ignore) AND substr_count($document->baseurl,"/administrator") < 1 AND $_GET['view'] != 'form')
        continue;

    $buffer .= $tab . '<script src="' . $strSrc . '"';
    if (!is_null($strAttr['mime']))
    {
        $buffer .= ' type="' . $strAttr['mime'] . '"';
    }
    if ($strAttr['defer'])
    {
        $buffer .= ' defer="defer"';
    }
    if ($strAttr['async'])
    {
        $buffer .= ' async="async"';
    }
    $buffer .= '</script>' . $lnEnd;
}

保存上述更改后,清除已设置的缓存并测试Joomla网站和Joomla管理控制台。如果查看源代码,则不存在所有预定义文件。

您可以尝试将其隐藏在模板中的index.php。只需将此行放在<jdoc:include type="head" />之前,并根据需要对脚本进行必要的更改。

<?php 
    $search = array('mootools-more.js', 'caption.js');
    // remove the js files
    foreach($this->_scripts as $key => $script) {
        foreach($search as $findme) {
            if(stristr($key, $findme) !== false) {
                unset($this->_scripts[$key]);
            }
        }
    }
?>

答案 1 :(得分:3)

可以使用其中一种方法 -

方法1: 放在<jdoc:include type="head" />之前

$search = array('mootools', 'caption.js');
    // remove the js files
    foreach($this->_scripts as $key => $script) {
        foreach($search as $findme) {
            if(stristr($key, $findme) !== false) {
                unset($this->_scripts[$key]);
            }
        }
    }

//方法2

在模板的index.php中

$parameter_script = 'scripts'; 
$headerstuff=$document->getHeadData();
reset($headerstuff[$parameter_script]);
foreach($headerstuff[$parameter_script] as $key=>$value){
unset($headerstuff[$parameter_script][$key]);     
}
$document->setHeadData($headerstuff);

//方法3

在文件目录/plugins/system中创建一个名为“removemootools.php”的新文件并插入以下代码(您还需要在数据库中注册该插件)。

class plgSystemRemoveMooTools extends JPlugin
{
public function onAfterDispatch()
{
$app = JFactory::getApplication();
if($app->isSite()) //Only ever remove MooTools from the client-side, never the admin side
{
//Repeat these three line for all js you want to exclude
$mootools = JURI::root(true).DS.'media'.DS.'system'.DS.'js'.DS.'mootools.js';
$document = JFactory::getDocument();
unset($document->_scripts[$mootools]);
}
}
}

答案 2 :(得分:0)

我使用此代码从头部删除jquery文件(Joomla!3.3.1)

<?php

//Remove jquery
$search = array('jquery', 'jquery.min.js');
    // remove the js files
    foreach($this->_scripts as $key => $script) {
        foreach($search as $findme) {
            if(stristr($key, $findme) !== false) {
                unset($this->_scripts[$key]);
            }
        }
    }
?>

<jdoc:include type="head" />