Удаление лишних JavaScript-файлов и отключение функции hasTooltip из раздела <head> в движке Joomla 3.0 и выше — распространённая задача. Это необходимо для облегчения веб-страницы, что положительно влияет на скорость загрузки сайта и благотворно сказывается на оценке сайта поисковыми системами.
1. Отключение hasTooltip
hasTooltip — это внутренняя функция Joomla, путь к которой в файловой системе:/libraries/cms/html/bootstrap.php.
Инициализация (посадка) tooltip происходит в этом файле, приблизительно на строке 474:
// Attach tooltips to document
JFactory::getDocument()->addScriptDeclaration(
"jQuery(document).ready(function() {
jQuery('" . $selector . "').tooltip(" . $options . ");
});"
); Для отключения функции необходимо удалить или закомментировать указанные строки.
2. Блокировка загрузки ненужных JS-скриптов в шаблоне
Один из популярных и проверенных способов заблокировать загрузку ряда ненужных JS-файлов — добавить следующий код в раздел <head> страницы. Путь к файлу:/templates/{имя_шаблона}/index.php.
$headlink = $this->getHeadData();
unset($headlink['scripts']['/media/system/js/caption.js']);
unset($headlink['scripts']['/media/system/js/validate.js']);
unset($headlink['scripts']['/templates/protostar/js/template.js']);
unset($headlink['scripts']['/media/jui/js/jquery.min.js']);
unset($headlink['scripts']['/media/jui/js/jquery-migrate.min.js']);
unset($headlink['scripts']['/media/jui/js/bootstrap.min.js']);
unset($headlink['scripts']['/media/jui/js/jquery-noconflict.js']);
$this->setHeadData($headlink); 3. Удаление подгрузки JS-скриптов на уровне системных файлов Joomla
Ниже описано, как отключить автоматическую подгрузку этих JS-скриптов непосредственно в PHP-файлах системы Joomla.
Шаги:
- Откройте файл по пути:
/libraries/cms/html/html.php. - Найдите функцию
public static function script(приблизительно строка 672). - Чуть ниже найдите строку:
php $includes = static::includeRelativeFiles('js', $file, $relative, $detect_browser, $detect_debug); - Замените её на следующий блок кода:
php if(strpos($_SERVER['REQUEST_URI'], 'administrator/')) { $includes = static::includeRelativeFiles('js', $file, $relative, $detect_browser, $detect_debug); }
Принцип работы и важное замечание:
Код проверяет URL текущего запроса. Если в адресе присутствует подстрока administrator/ (что означает доступ к административной панели сайта), то подгрузка скриптов выполняется. Для всех остальных страниц (публичная часть сайта) подгрузка указанных скриптов не производится. Это необходимо для корректной работы административного интерфейса Joomla, которому эти скрипты могут быть нужны, в то время как на фронтенде их можно отключить для повышения производительности.
Сводная таблица действий
| № | Цель действия | Объект / Функция | Путь к файлу | Метод |
|---|---|---|---|---|
| 1 | Отключение всплывающих подсказок (tooltip) | hasTooltip | /libraries/cms/html/bootstrap.php | Удалить или закомментировать строки с ~474 по ~482. |
| 2 | Блокировка скриптов в конкретном шаблоне | Скрипты в <head> | /templates/{имя_шаблона}/index.php | Добавить блок кода с unset для ненужных скриптов. |
| 3 | Системное отключение скриптов во фронтенде | Функция html.php | /libraries/cms/html/html.php | Заменить строку вызова includeRelativeFiles на условную проверку URL. |

