Відразу хочу звернути вашу увагу на те, що цей матеріал відноситься до Joomla 3.2+, так як саме в цій версії з'явився зручний AJAX інтерфейс у вигляді компонента com_ajax. Компонент є точкою входу для AJAX запитів в модулі і плагіни.
Постановка задачі
Отже, наш модуль виводить список останніх зареєстрованих користувачів. Щоб показати, як легко можна реалізувати AJAX функціональність в модулі, як приклад зробимо наступне - при кліці на користувача будуть відображати інформацію про нові останніх трьох матеріалів користувача.
Звичайно, це дуже надуманий приклад, так як статті можна було б з легкістю отримати відразу ж зі списком користувачів. Але наше головне завдання полягає в тому, щоб розібратися, як працює AJAX інтерфейс, тому суть прикладу в принципі не важлива.
Готуємо макети виведення
В макетах нам потрібно передбачити висновок ID користувача, щоб потім передати його в AJAX запит. Також нам потрібно додати контейнер для виведення списку матеріалові обернути висновок користувача на заслання, щоб прив'язатися до події кліка.
Наш модуль має два макети: default і table. Як приклад візьмемо default макет. Всі зміни в розмітці були зроблені між тегами
Ми обернули висновок в тег і призначали клас mlu-user. щоб прив'язатися до події кліка. ID користувача виводиться в атрибут data-userid. Також було додано контейнер для виведення відповіді AJAX запиту.
Додаємо AJAX запит
Для складання AJAX запиту в модулі ми повинні дотримуватися певних правил, які диктує нам інтерфейс компонента com_ajax. Наступні параметри є обов'язковими при формуванні запиту:
- option = com_ajax - завжди використовуємо компонент com_ajax;
- module = module_name - передаємо ім'я модуля, в який ми робимо запит. Важливий момент - ім'я модуля має бути без префікса mod_;
- format = json - вказуємо формат повертаються даних: raw. json або debug.
Код AJAX запиту ми додаємо в кінці точки входу модуля mod_latest_users.php:
Не забудьте додати в мовні файли константи:
Додаємо AJAX обробник
Підтримка модулів в AJAX інтерфейсі реалізована через виклик методу в файлі хелпера модуля, назва якого має закінчуватися на Ajax. За замовчуванням префіксом методу є get. в результаті ми отримуємо getAjax ().
Ми можемо викликати метод з іншим ім'ям, задавши ім'я методу в змінної method при формуванні запиту, наприклад method = myMethod. Таким чином, буде викликаний метод myMethodAjax (). Це дає можливість реалізувати в модулі кілька різних обробників AJAX запитів.
Ось як виглядає обробник в нашому модулі:
На прикладі цього матеріалу ми з вами переконалися в тому, що додавання AJAX в модуль Joomla є досить простим завданням завдяки AJAX інтерфейсу. Щасти вам розробки!
код модуля
Вихідний код модуля доступний на GitHub: для Joomla 2.5 і для Joomla 3.
Також ви можете скачати архів: для Joomla 2.5 і для Joomla 3.