В 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 для человеко-понятного результата на выходе