Tags


Mootools is a lightweight javascript framework used in Joomla 2.5. Your Joomla website will by default include both mootools-core.js (92.9 KB) and mootools-more.js (233 KB). Mootools is used mostly in your Joomla Admin Dashboard, it is not used often in Joomla templates.

UPDATE – 2012.05.11
After several months of testing Joomla 2.5 and various components, we have found that if you disable mootools you may break a lot of features. For example, while testing VirtueMart, we lost all search filter functionality. After enabling mootools, the problems were resolved. Therefore, we do not recommend disabling mootools. DISABLE MOOTOOLS AT YOUR OWN RISK.

If your Joomla website does not use mootools, it may benefit you to disable mootools. If you disable mootools in Joomla 2.5, you can:

  • Increase page download speed by removing 325.9 KB of un-needed javascript code
  • Reduce the number of conflicts caused between mootools and other javascript frameworks, such as jQuery
Steps to disable MooTools in Joomla 2.5:
  1. Using your favorite file editor, open for edit:
    libraries/joomla/document/html/renderer/head.php
  2. Find this code at line 151:
    // Generate script file links
    foreach ($document->_scripts as $strSrc => $strAttr)
    {
        $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;
    }

    … and update it to include the code (highlighted in green below)

    // Generate script file links
    foreach ($document->_scripts as $strSrc => $strAttr)
    {
        // Code to disable mootools for your site (still loads it for your admin)
        // Written by Brad Markle w/ InMotionHosting.com
        $ex_src = explode("/",$strSrc);
        $js_file_name = $ex_src[count($ex_src)-1];
        $js_to_ignore = array("mootools-core.js","mootools-more.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;
    }
  3. After saving the changes above, clear any cache that you have set and test your Joomla website and your Joomla Admin Dashboard. If you view the source code, mootools should not load on your site but it will load in your Joomla Admin Dashboard.

Notes:

If your Joomla 2.5 Admin folder is not named “administrator”, update this section of code with the correct folder name:
substr_count($document->baseurl,”/administrator”)

If you would like to disable other scripts, such as caption.js, add it to the js_to_ignore array, as in:
$js_to_ignore = array(“mootools-core.js”,”mootools-more.js”,”caption.js”);

If you are experiencing any issues due to this modification, feel free to post a comment at the bottom of this page and we’ll be happy to review.

UPDATE – 2012.04.04
While writing other Joomla 2.5 tutorials, I’ve learned that the frontend article submission form requires mootools. If you disabled mootools and clicked the “Save” button when trying to save an article, nothing would happen. I updated the code above to include:

AND $_GET[‘view’] != ‘form’
If you are on a form on your website, this line of code will allow mootools to load.