Main menu

Отключение mootools в Joom 1.5-2.5

Yazov Rating Yazov Rating Yazov Rating Yazov Rating Yazov Rating Рейтинг 4.85 (53 Голосов)

Joom - отличный движок. Правда есть в нем несколько недочетов, которые приходится исправлять вручную. Сегодня мы поговорим, о том, как отключить Mootools в Joomla! любой версии.

Если вы не используете на своем сайте Mootools, целесообразнее будет отключить данный скрипт и все его зависимости, так как все это весит не мало и загружает Ваш сайт, что делает его более медленным.

Если не пользоваться никакими лишними расширениями, то отключить mootools можно прописав следующий php код в index.php Вашего шаблона, сразу после открытия <head>:

unset($this->_scripts[$this->baseurl.'/media/system/js/mootools-core.js'],
$this->_scripts[$this->baseurl.'/media/system/js/mootools-more.js'],
$this->_scripts[$this->baseurl.'/media/system/js/core.js'],
$this->_scripts[$this->baseurl.'/media/system/js/mootools.js'],
$this->_scripts[$this->baseurl.'/media/system/js/caption.js']);
?> 

После добавления данного кода в файл вашего шаблона mootools загружаться не будет.

Так же есть вариант отключения лишнего использования mootools, который оправдан тем, что mootools будет грузиться только тогда, когда нам это нужно.

Для этого нам нужно в файле components/com_content/controller.php закомментить строчку

JHtml::_('behavior.caption');

Вариант 2

 

Открываем index.php вашего шаблона и после строк:

Открываем index.php вашего шаблона и после строк:

<?php
defined('_JEXEC') or die;


добавляем:

unset(
  $this->_scripts[$this->baseurl.'/media/system/js/mootools-core.js'], 
  $this->_scripts[$this->baseurl.'/media/system/js/mootools-more.js'],
  $this->_scripts[$this->baseurl.'/media/system/js/core.js'],
  $this->_scripts[$this->baseurl.'/media/system/js/caption.js']
);

из кода наглядно видно, какие скрипты перестают загружаться.

Но если посмотреть исходных код страницы то можно обнаружить остатки кода для инициализации caption.js:

<script type="text/javascript">
do_nothing( function() {
 
});
</script>


Чтобы его вырезать, добавим после нашего кода следующее регулярное выражение:

if( isset($this->_script['text/javascript']) ) {
  $this->_script['text/javascript'] = preg_replace('%window\.addEvent\(\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\'\);\s*}\);\s*%', '', $this->_script['text/javascript']);
  if( empty($this->_script['text/javascript']) )
  unset( $this->_script['text/javascript'] );
}:


Готово, и самое главное — ядро Joomla не затронуто, так что можно обновляться без проблем!

Follow me on TwitterЯ ВКонтакте