AJAX функциональность с помощью AJAX интерфейса com_ajax
23.06.2017
Сразу хочу обратить ваше внимание на то, что этот материал относится к Joomla 3.2+, так как именно в этой версии появился удобный AJAX интерфейс в виде компонента com_ajax. Компонент является точкой входа для AJAX запросов в модули и плагины.
POLYBIUS - The Video Game That Doesn't Exist
Постановка задачи
Итак, наш модуль выводит список последних зарегистрированных пользователей. Чтобы показать, как легко можно реализовать AJAX функциональность в модуле, в качестве примера сделаем следующее – при клике на пользователя будут отображаться заголовки последних трех материалов пользователя.
Week 12
Конечно, это очень надуманный пример, так как статьи можно было бы с легкостью получить сразу же со списком пользователей. Но наша главная задача состоит в том, чтобы разобраться, как работает AJAX интерфейс, поэтому суть примера в принципе не важна.
Подготавливаем макеты вывода
В макетах нам нужно предусмотреть вывод ID пользователя, чтобы затем передать его в AJAX запрос. Также нам нужно добавить контейнер для вывода списка материалови обернуть вывод пользователя в ссылку, чтобы привязаться к событию клика.
Наш модуль имеет два макета: default и table. В качестве примера возьмем default макет. Все изменения в разметке были сделаны между тегами <li>:
<li> <a href="#" class="mlu-user" data-userid="<?php echo $user->id; ?>"> <?php if ($displayMode == 0) : ?> <?php echo $user->username; ?> <?php elseif ($displayMode == 1) : ?> <?php echo $user->name; ?> <?php elseif ($displayMode == 2) : ?> <?php echo $user->username; ?> (<?php echo $user->name; ?>) <?php endif; ?> </a> <div id="mlu-container-<?php echo $user->id; ?>" style="display:none"></div> </li>Мы обернули вывод в тег <a> и назначали класс mlu-user, чтобы привязаться к событию клика. ID пользователя выводится в атрибут data-userid. Также был добавлен контейнер для вывода ответа AJAX запроса.