Опубликовано автор в категориях Joomla.

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”

  1. Neolot

    Можете посоветовать пару толковых источников по созданию шаблонов для Joomla 1.5. На официальных сайтах нормального руководства не нашел.

    Ответить
    • Hiway

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

      Ответить
  2. bat

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

    Ответить
  3. Guest

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

    Ответить
    • Hiway

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

      Ответить
  4. Guest

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

    Ответить
  5. lexx

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

    Ответить
  6. ChaosHead

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

    Ответить
  7. Игорь

    Огромное спасибо…. Долго искал информацию по переходу на MooTools 1.2. Обязательно поставлю ссылку на Ваш блог…

    Ответить
  8. fob

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

    Ответить
    • Hiway

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

      Ответить

Оставить комментарий

  • (не будет показан)