Joomla Ajax интерфейс (com_ajax)
В Joomla 3.x появился новый компонент под названием com_ajax. Который представляет из себя тонкий, расширяемый компонент, использующийся в качестве отправной точки для выполнения HTTP запросов из модулей и плагинов.
Несколько примеров использования:
- Модуль, который извлекает данные из внешнего API
- Модуль, использующий ресурсы стороннего компонента
- Плагин, реализующий API в качестве функционала на Вашем сайте
Это далеко не весь перечень возможностей, которые открывает com_ajax перед разработчиками.
Анатомия Ajax запросов
Обязательно:
- option=com_ajax
- [module|plugin]=name
Необязательно:
- format=[json|debug] - по умолчанию raw, если не указано
- method=[custom fragment] - по умолчанию get, если не указано
Обзор
Все запросы начинаются с ?option=com_ajax - ссылкой на компонент. Так же должен быть указан тип расширения и его название.
Дополнительные переменные и значения, используемые Вашим расширением, также могут быть включены в URL. Например, запрос на ?option=com_ajax&module=session, где вызывается mod_session, с возвращаемыми данными в формате по умолчанию. В противоположность, ?option=com_ajax&plugin=session&format=json осуществит вызов onAjaxSession и вернет результат в формате JSON.
Для модулей
Поддержка модуля осуществляется путем вызова метода в файле helper.php модуля.
Запрос модуля должен включать в URL переменную module, в паре с именем модуля (module=session для mod_session).
Это значение также используется:
- Как имя каталога для проверки вспомогательного файла, например /modules/mod_session/helper.php
- Как имя класса для вызова, например modSessionHelper
Так же запрос может содержать необязательный параметр method. Переменная может быть включена, чтобы переопределить метод по умолчанию (get).
ПРИМЕЧАНИЕ: Все методы должны заканчиваться на Ajax. Например: method=mySuperAwesomeMethodToTrigger нужно назвать mySuperAwesomeMethodToTriggerAjax
Ajax-Session-Module является примером модуля, который демонстрирует эту функциональность.
Для плагинов
Поддержка плагинов осуществляется вызовом события плагина onAjax[Name].
Запрос модуля должен включать в URL переменную plugin, в паре с именем модуля (plugin=session для onAjaxSession).
Это значение также используется для:
- Передачи имени плагина для последующей plgAjax[Name] конверсии
- Передачи имени функции плагина для последующей onAjax[Name] конверсии
Ajax-Latest-Articles является примером плагина, который демонстрирует эту функциональность.
Формат возвращаемых данных
format=[json|debug] является дополнительным аргументом, определяющим формат получаемого результата:
- json для формата JSON
- debug для человеко-понятного результата на выходе