Mootools это легковесный javascript фреймворк используемый Joomla 2.5. Ваш сайт на Joomla по умолчанию подключает два js файла mootools-core.js (92.9 KB) и mootools-more.js (233 KB). Mootools в основном используется в админке Joomla, и иногда в шаблонах.

При отключении этой библиотеки на стороне клиента, Вы получите несколько плюсов.  Таких как:

  • Ускорение загрузки страницы сайта, страница будет легче на 325.9 KB ненужного javascript'a
  • Исчезнут конфликты между mootools и другими javascript библиотеками, например с jQuery, связанные с тем, что mootools использует $. 

359 КБ это не так уж и мало. Joomla сайты всегда страдают излишней медлительностью. Можно в очередной раз разместить сервер в стойку, оптимизировать базу, включить кешеры и вычистить весь css, но благодаря модульности joomla, она все равно будет грузится медленно. 

После нескольких месяцев работы Joomla 2.5 с разными компонентами, вы увидите, что отключение mootools вы можете много чего сломать. Для примера, при тестировании VirtueMart, вы потеряете весь функционал фильтров. После включения mootools, проблем не будет. Поэтому, на работающих сайтах не рекомендуется отключать mootools. ОТКЛЮЧАЙТЕ MOOTOOLS НА СВОЙ СТРАХ И РИСК.

Шаги для отключения MooTools в Joomla 2.5:

  1. Откройте в любом текстовом редакторе следующий файл:
    libraries/joomla/document/html/renderer/head.php
  2. найдите этот код на строке 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;
    }
    

    ...и обновите так, чтобы получилось, как следует ниже (подсвечено то, что необходимо добавить)

    // Generate script file links
    foreach ($document->_scripts as $strSrc => $strAttr)
    {
        // Код отключения mootools на сайте(в админке ничего не изменится)
        $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. После сохранения, отчистите кеш и проверьте сайт и работу админки. Если вы сделали все верно, то в админке mootools загрузится, а на сайте нет.  

Замечание:

Если ваша Joomla 2.5 админка называется не "administrator", обновите следующие строки на корректное название:
substr_count($document->baseurl,"/administrator")

Если вы хотите, чтобы не подключались еще и другие скрипты, такие как caption.js, добавьте их в js_to_ignore array:
$js_to_ignore = array("mootools-core.js","mootools-more.js","caption.js");

Если у вас возникли проблемы c подобными модификациями, не стесняйтесь оставлять комментарии внизу страницы. 

При редактировании материалов на стороне сайта, mootools необходим. Если вы его отключите, то кнопка  "Save" не сработает. Поэтому был добавлен следующий код:

AND $_GET['view'] != 'form'
Если вы редактируете что-то прямо на сайте то Mootools будет загружен

Оставлять комментарии могут только зарегистрированные пользователи

Комментарии  

Adrian
# Adrian 24.04.2015 21:28
Спасибо! Помогло. Все работает.
Сергей Храбрый
# Сергей Храбрый 04.11.2016 16:36
Сразу перестает работать rockbox .. В общем тема не актуальная
Админ Лайт
# Админ Лайт 27.07.2018 14:18
Проблема показов блоков контекстной рекламы на javascript в joomla 2.5. Локализовано через f12 в chrome - описан конфликт библиотек c mootools. Решено через установку Mootools Enabler/Disabler.By Roberto Segura.
Евгений1983
# Евгений1983 05.12.2019 19:06
Огромнейшее спасибо за данную статью, всё работает отлично, на сайте скрипты Mootools не грузятся, в админке грузятся. Последние обновление API Яндекс карт версии 2.1.75 конфликтует со скриптом Mootools и у всех пользователей не грузятся Яндекс карты. А ваш метод решает проблему. Еще раз огромное спасибо, успехов и новых клиентов!

Оставьте ссылку на ваше решение вот здесь:
https://toster.ru/q/687466
https://yandex.ru/blog/mapsapi/pereklyuchenie-ssylki-2-1-na-versiyu-2-1-75#comment-add