Небольшая статья для разработчиков, посвященная вопросам использования мамботов в расширениях Joomla: как инициализировать группу мамботов, вызывать мамботы для заданного события и как передать параметры в мамбот.
Для доступа к мамботам из расширений Joomla существует глобальная переменная $_MAMBOTS, содержащая экземпляр стандартного класса mosMambotHandler, объявленного в файле /includes/joomla.php.
При возникновении какого-либо события (стандартного или пользовательского), разработчик расширения должен сначала загрузить соотвествующую группу мамботов. Например, загрузка группы мамботов content:
$_MAMBOTS->loadBotGroup( 'content' );
Что происходит при загрузке мамботов? Все установленные мамботы этой группы подгружаются ядром Joomla с помощью функции require_once. При этом происходит регистрация функций мамботов для заданных событий.
После этого, можно уже вызывать мамботы для указанного события:
$results = $_MAMBOTS->trigger( 'onPrepareContent', array( &$row, &$params, $page ), true );
Первым параметром в функции указывается имя события, вторым — массив аргументов, а третий параметр определяет, должны вызываться из этой группы неопубликованные мамбот или нет.
Таким образом, на примере видно, что для группы мамботов content, на событие onPrepareContent в мамботы передается 3 параметра (объект материала, параметры материала и номер страницы).
Cписок передаваемых и принимаемых параметров для каждого из стандартных событий будет рассмотрен чуть позже, а желающие смогут сами посмотреть в исходных кодах Joomla (просто поищите вызов $_MAMBOTS->trigger и посмотрите что и куда передается).
Что происходит при вызове функции trigger? Все очень просто: последовательый вызов функций мамботов, зарегистрированных на указанное событие. Порядок вызова мамботов соотвествует порядку, заданному в Менеджере мамботов административной панели Joomla. При последовательном вызове каждый последующий мамбот получает на вход данные, обработанные предыдущим, т.е. возвращаемый функцией trigger объект будет содержать все изменения, которые произвели в нем вызванные мамботы.