Рубрики
Joomla

Обновление библиотеки MooTools до версии 1.2.x в Joomla! 1.5.x

joomla_mootools
Joomla 1.5 довольно мощная CMS: для нее существует множество расширений, гибкий и мощный API. Кроме того она построена с использованием MVC модели, что позволяет веб-дизайнерам переписывать разметку компонентов в своих шаблонах.

Не смотря на все свои достоинства Joomla! 1.5 до сих пор использует устаревшую версию JavaScript фреймворка MooTools 1.11. Это при том, что в следующей версии библиотеки 1.2.x введено много новых функций и рефакторизирован код. Апгрейд библиотеки разработчики Joomla! планируют в следующей версии CMS. А пока приходится использовать устаревшие решения. Однако, Marco Solazzi предложил вариант самостоятельного апгрейда библиотеки до версии 1.2.x в Joomla! 1.5.9 и выше.

Особенности метода:

1. Почти полная совместимость с Mootools 1.11, чтобы избежать возможных ошибок
2. Обновление плагинов Mootools, там где это возможно
3. Отсутствие или минимальные изменения ядра Joomla
4. Осуществление поддержки Mootools у компонентов, работающих в Legacy (1.0.x) режиме

1. Тихое обновление MooTools

Прежде всего давайте загрузим последнюю версии Core Mootools и Mootools More (сейчас 1.2.3): MooTools 1.2.3 (YUI Compressor65 kb)

Распакуйте архив и поместите два файла в директорию /system/js/

Далее нужно скачать файл совместимости, который будет позволять корректно работать сценариям версии 1.11 с новой версией библиотеки, и поместить его в ту же папку, что и выше. Mootools 1.11 to 1.2.3 for Joomla 1.5 (72.06 KB). В последствии все действия приведенные ниже основываются на использовании файлов из этого архива.

2. Обновление плагинов

Одним из самых полезных плагинов Mootools является Squeezebox, используемых для модальных окон. В архиве скачанном выми выше содержится совместимая с 1.2.x редакцией версия, ее также надо поместить в папку /system/js/:

3-4. Немного PHP

Поскольку переднами стоит задача минимально затрагивать изменения ядра Joomla! то мы используем небольшой трюк, который позволит использовать новую версию MooTools только в фронт-энде и только через вызов его из index.php нашего шаблона.

Joomla базируется на нескольких PHP библиотеках которые находятся в папке libraries/, одна из них Joomla API, а также мы можем найти ezSQL (библиотека для работы с базами данных), PHPMailer (системы работы с почтой) и phpgacl (система контроля доступа). Чтобы воспользоваться встроенными библиотеками Joomla, и в то же время, предотвратить переписывание модификаций в будущих релизах, автор создал папку с названием my_libs в libraries/, содержащую файл с классом my_behavior для Joomla 1.5.x (он также находится в скачанном выше архиве).

По сути класс предоставляет собой статическую функцию, которая заново вызывает заглавную часть объекта документа Joomla!, ищет Mootools и заменяет его на версию 1.2, которую мы загрузили ранее.

Если Mootools не будет найден, то он будет загружены, расширяя таким образом функционал компонентов 1.0.x, которые работают в режиме наследования (Legacy Mode).

Вы можете вызвать этот класс в вашем index.php файле шаблона Joomla! путем размещения этих строк кода перед тегом head вашего шаблона:

<?php
JLoader::import( 'my_libs.behavior' );
MY_Behavior::mootoolsFix();
?>
<jdoc:include type="head" />

Если вам нужно обратно переключится в режим работы Joomla! с библиотекой Mootools 1.11, то вам нужно поместить в том же месте следующий код:

MY_Behavior::mootoolsFix(false);

Внимание! Данный метод работает только на базовой установке Joomla! и может не работать с определенными компонентами.
Например, VirtueMart использует свою логику работы с MooTools и этот метод не работает с ним.

P.S. Мысли о роскоши…

Являются ли автомобили ауди роскошью, а не средством передвижения? По моему да. Если допустим, это авто бизнес-класса, с двигателем литра на 4 и кожаным салоном. Чем не роскошь? Да и цены на подобное «средство передвижения» зачастую доходят до цен на недвижимость за рубежом.

22 ответа к “Обновление библиотеки MooTools до версии 1.2.x в Joomla! 1.5.x”

В принципе, на русском действительно нет. Но все зависит от того что вы хотите. Оптимальный вариант использовать wiki c joomla.org и также и форум, а именно раздел по шаблонам и кастомизации. Было время начал писать свой мануал, но работа не позволяет закончить. Но если есть какие-то конкретные вопросы, то напишите, могу ответить постом.

Америкосы пишут, что полезная штука mootools… но у вас в статье много чего упущено, к примеру /system/js/ — это бред. по правде там media/system/js, далее: ссылка у вас битая на сайт скрипт. и забыли написать для новичков что нужно не забыть убрать расширение *.txt с файла со скриптом.. ну и другие вещи. А так… статья полезна )))

Где скачивать обновленный Squeezebox (кроме Вашего архива)?
На офсайте не нашел, да и в Joomla! 1.5.20 его почему то не включили (оставили старую версию), хотя обновленный MooTools присутствует.
Спасибо.

Guest В Joomla! 1.5.20 ecnfydkty специальный плагин который полностью включает вместимость с Mootools 1.2 и подключает библиотеку. Это было одним из главных новшеств 1.5.19

Спасибо за быстрый ответ.
У меня в Opera — jQuery (jQuery Cycle Plugin) конфликтует с Mootools — растягивает (СИЛЬНО УВЕЛИЧИВАЕТ) картинку. Отключаю Mootools — все в порядке. (В IE всех версий и FF работает правильно.)
Не могли бы Вы подсказать, как это исправить. Плагин делает красивые эффекты, отказываться не хотелось бы.
Спасибо.

В Joomla 1.5.20 в менеджере плагинов я увидел «Обновление — mootools», нажал включить — и все пропало. Ни сайт ни админка не открываются. Бэкапы еще не успел сделать, так как только 3 часа назад все поставил настроил. Шо делать, люди? Что за …???

Идиотский метод тут описан. Нужно просто скачать 3 файла и соединить их в один, как это сейчас сделано в Joomla. И этим файлом заменить тот, что в Joomla. Меньше файлов — быстрее открывается сайт и не нужно что-то мудрить с вызовами.

Есть ли смысл обновляться, если стоит virtuemart? Для него какая то своя версия mootools? Если да, то как её обновить?

fob На сегодняшний день, я думаю стоит просто обновить проект до Joomla! 2.5 и VirtuMart 2.0 и все будет классно 🙂

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *