Практические решения

Техники быстрой разработки: отключение Mootools

Joomla
Добавление в избранное
Сохранить

Отключение Mootools в Joomla

Общеизвестно, что в веб-разработке два человека совсем не обязательно используют одни и те же инструменты. Почему же фреймворк «Javascript» не может следовать этому правилу? Будь то jQuery, Prototype, YUI, Dojo, даже Twitter Bootstrap или что-то похожее, у всех нас должен быть выбор, когда дело касается инструментов для разработки.

Позвольте объяснить, почему я выбираю MooTools в качестве фреймворка, работая с Joomla! Такова необходимость. Необходимость не в MooTools, а в едином Javascript фреймворке, который официально внедрён в систему. Выгода огромна: разработка и ядра и расширений стандартизирована, что постоянно обеспечивает конечного пользователя «боевым» опытом сторонних разработчиков.

Лично мне очень нравится jQuery: Javascript фрейморк, с которым я познакомился несколько лет назад. Тогда я начал разрабатывать расширения для Joomla, и искал случай применить свои навыки работы с jQuery, не задумываясь о MooTools. В jQuery поддерживается режим «No Conflict», который позволяет работать одновременно с другими фреймворками. Однако могут возникнуть проблемы, потому что не все плагины jQuery написаны с поддержкой «No Conflict», и использование двух отдельных Javascript фреймворков может значительно снизить работоспособность сайта на слабых компьютерах и увеличить время загрузки сайта. В любом случае, я просто предпочитаю отключать Mootools, когда работаю.

К сожалению, отключение Mootools в Joomla – единственный выход для «свободных» разработчиков. Те, кто работает над созданием сторонних расширений, должны будут смириться с наличием MooTools или грузить свой Javascript фреймворк таким образом, чтобы можно было избежать конфликтов с библиотекой MooTools.

Отключение Mootools в Joomla - решение

Так как же отключить MooTools? Не получится просто удалить его из папки media/system/js – система все равно попытается найти этот файл, только вы получите ошибку запроса HTTP при каждой попытке загрузить станицу. Избавиться от MooTools не так просто, но к счастью это можно сделать с помощью плагина.

Создайте новый файл removemootools.php в каталоге /plugins/system и вставьте в него такой код (вам придется добавить плагин в базу данных):


class plgSystemRemoveMooTools extends JPlugin
{
       public function onAfterDispatch()
 {
 $app = JFactory::getApplication();
 if($app->isSite()) //Удаление MooTools только с фронтальной части сайта, не затрагивая панель администратора
     {
      $mootools = JURI::root(true).DS.'media'.DS.'system'.DS.'js'.DS.'mootools.js';
      $document = JFactory::getDocument();
      unset($document->_scripts[$mootools]);
      }
   }
}

Таким образом, мы избавились от фреймворка MooTools в Joomla, но есть много файлов MooTools, которые Joomla! подгружает автоматически. Их можно удалить, просто добавив функцию unset() в плагин, который вы только что создали.
Как только вы подключите плагин, MooTools исчезнет с сайта совсем. И как ведет себя код? Для начала убедимся, что находимся в клиентском приложении Joomla! Удаление MooTools из панели настроек Joomla! может закрыть доступ к некоторым её пунктам.

MooTools больше нет на вашем сайте. Теперь вы сможете использовать любой фреймворк Javascript, не боясь вмешательства со стороны MooTools.

 

Попробуйте переделать плагин так, чтобы он мог избирательно удалять из Joomla MooTools или любой другой фреймворк, основываясь на том компоненте, в котором вы находитесь в данный момент. Если для одного компонента нужен MooTools, а для другого jQuery, можно создать список исключений в самом плагине. Так можно будет избежать конфликтов и браузеру не придётся подгружать сразу два фреймворка одновременно.

Примечание переводчика: В грядущей версии Joomla 3.0 можно будет выбирать между jQuery и Mootools - какой фреймворк будет использоваться по умолчанию. Команда разработчиков прислушалась к многочисленным просьбам и реализовала возможность выбора фрейморка, поскольку большая часть людей, создающих сторонние расширения, использует jQuery. Кроме того, в Joomla 3.0 будет реализован пользовательский интерфейс на базе Twitter Bootstrap.

Данная статья актуальна для Joomla 2.5, поскольку фреймворк Mootools включен в дистрибутив этой ветки принудительно, однако согласно графику цикла существования версий Joomla, версия 2.5 будет параллельно поддерживаться с развитием 3.0 вплоть до конца 2013 года. С учетом специфики рунета, не все будут торопиться обновлять свои сайты, откладывая вопрос остаться на 2.5 или перейти на Joomla 3.0? в долгий ящик. Таким образом, техника отключения Mootools, рассмотренная в данной статье, будет актуальна ещё долгое время.

Оригинальная статья: Jarrod Nettles
Katerina Vorobyova
Переводчик, IT любитель, фотомодель.

Подпишитесь на рассылку новостей CMScafe