29 октября 2009
Оптимизируем сайт убирая загрузку MooTools
Думаю многие из вас смотрели html-код своего сайта в браузере и замечали следующие строки:
mootools.js — собственно MooTools, размером в 74кб.
Всё хорошо когда оно используется, а используется оно наверняка если у вас стоит какой-то коммерческий шаблон, либо установлен какой-то продвинутый ротатор изображений. Если вы точно уверены, что MooTools вам не нужен или вы вообще фанат JQuery, то описанное ниже для вас.
Из-за того, что мы будет вырезать Mootools, нам так же придётся вырезать загрузку плагина для MooTools «caption.js», который реализует возможность всплывающих подсказок. Этот функционал в чистой Joomla гостям нигде не доступен (доступен лишь в компоненте com_content пользователям с правами «Автор» и выше), поэтому убираем загрузку «mootools.js» и «caption.js» для гостей:
1) В файле index.php шаблона перед строкой <jdoc:include type=«head» /> добавим:
Заметьте: если в вашем шаблоне есть строка <?php JHTML::_('behavior.mootools'); ?> то ваш шаблон используется MooTools, поэтому удалять его не следует.
Иногда бывает необходимость удалить загрузку MooTools для какого-то конкретного компонента, например в Community Builder используется JQuery и загружать просто так MooTools очень не здоровое действие:
1) В файле index.php шаблона перед строкой <jdoc:include type=«head» /> добавим:
2) Решение для самых отчаянных, которые хотят вырезать загрузку любых скриптов:
<script type="text/javascript" src="/yalta/media/system/js/mootools.js"></script>
mootools.js — собственно MooTools, размером в 74кб.
Всё хорошо когда оно используется, а используется оно наверняка если у вас стоит какой-то коммерческий шаблон, либо установлен какой-то продвинутый ротатор изображений. Если вы точно уверены, что MooTools вам не нужен или вы вообще фанат JQuery, то описанное ниже для вас.
Из-за того, что мы будет вырезать Mootools, нам так же придётся вырезать загрузку плагина для MooTools «caption.js», который реализует возможность всплывающих подсказок. Этот функционал в чистой Joomla гостям нигде не доступен (доступен лишь в компоненте com_content пользователям с правами «Автор» и выше), поэтому убираем загрузку «mootools.js» и «caption.js» для гостей:
1) В файле index.php шаблона перед строкой <jdoc:include type=«head» /> добавим:
<?php
$user =& JFactory::getUser();
if ($user->get('guest') == 1) {
$headerstuff = $this->getHeadData();
$scripts = $headerstuff['scripts'];
$headerstuff['scripts'] = array();
foreach($scripts as $url=>$type) {
if (strpos($url, 'js/mootools.js') === false && strpos($url, 'js/caption.js') === false) {
$headerstuff['scripts'][$url] = $type;
}
}
$this->setHeadData($headerstuff);
}
?>
Заметьте: если в вашем шаблоне есть строка <?php JHTML::_('behavior.mootools'); ?> то ваш шаблон используется MooTools, поэтому удалять его не следует.
Иногда бывает необходимость удалить загрузку MooTools для какого-то конкретного компонента, например в Community Builder используется JQuery и загружать просто так MooTools очень не здоровое действие:
1) В файле index.php шаблона перед строкой <jdoc:include type=«head» /> добавим:
<?php
JHTML::_('behavior.mootools');
if ($option == 'com_comprofiler') {
$headerstuff = $this->getHeadData();
$key = JURI::base( true ) . '/media/system/js/mootools.js';
unset( $headerstuff['scripts'][$key] );
$this->setHeadData( $headerstuff );
}
?>
2) Решение для самых отчаянных, которые хотят вырезать загрузку любых скриптов:
<?php
JHTML::_('behavior.mootools');
$document =& JFactory::getDocument();
if ($option == 'com_comprofiler') {
$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 );
}
?>
- paradoxtm
- 29 октября 2009, 19:54
- 0
Всё равно его не брошу… :)
Mootools, конечно, «тяжеловат», но визуально он выглядит симпатичнее JQuery.
А для заказчиков это часто решает роль ;)
Mootools, конечно, «тяжеловат», но визуально он выглядит симпатичнее JQuery.
А для заказчиков это часто решает роль ;)
- pedrosoft
- 29 октября 2009, 20:01
- 0
не, тут всё проще. кто знает mootools или jquery тот красоту может сделать и там и там. другое дело что mootools у нас мало кто знает так как исторически сложилось что jquery у нас стал популярнее. ну собственно и на западе так, и сервисы есть для поиска плагинов, у mootools с этим намного хуже.
- ppbarsrd
- 07 июля 2010, 21:29
- 0
Иногда бывает необходимость удалить загрузку MooTools для какого-то конкретного компонента...У меня один из компонентов использует prototype. Можно ли их как нибудь подружить, или хотя бы разделить по компонентам?
И если не сложно, разжуйте код. Спасибо!
- ppbarsrd
- 08 июля 2010, 12:22
- 0
С сутью кода разобрался, но он отключает mootools для всей страницы, а мне надо, чтобы он был отключен только для одного модуля, другой же, стоящий выше должен его использовать
- pedrosoft
- 08 июля 2010, 18:28
- 0
Ну так суть в том, что метод отключает загрузку на определённо странице (компоненте), а у модуля нет страниц, он публикуется на определённой странице. А что у вас prototype конфликтует с mootools?
- ppbarsrd
- 10 июля 2010, 09:24
- 0
Наглухо убивает, и в общем не мудрено. А надо. Как бы запустить prototype в изолированной «песочнице»? В отличии от jQuery функции совместимости в нем нет.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Комментарии:8