Как плагин AJAX Content Endpoint
перехватывает запросы
Технический разбор работы плагина Reemake AJAX Content Endpoint: как перехватываются запросы, формируется JSON и отдаётся HTML следующей порции материалов. С примерами кода и объяснением каждого шага.
Как работает
Событие onAfterInitialise
1. Плагин подписывается на onAfterInitialise — срабатывает до рендеринга страницы.
2. Если параметр ac_ajax=items — перехватить и обработать. Иначе — пропустить.
3. Учитываются ACL и уровни доступа пользователя через Factory::getUser().
4. Формируется JSON: { success, html, offset, total, hasMore }.
5. Отдача с заголовком Content-Type: application/json. Никакой HTML-разметки страницы.
Код
Основной обработчик
public function onAfterInitialise() {
$app = Factory::getApplication();
$input = $app->getInput();
if ($input->get('ac_ajax') !== 'items') {
return;
}
$offset = (int) $input->get('offset', 0);
$moduleId = (int) $input->get('module_id', 0);
$items = $this->getItems($offset, $moduleId);
$html = $this->renderCards($items);
echo json_encode([
'success' => true,
'html' => $html,
'offset' => $offset + count($items),
'hasMore' => count($items) === $this->limit,
]);
$app->close();
}Почему не com_ajax
Собственный эндпоинт вместо стандартного
В Joomla 6 com_ajax изменил работу с legacy-модулями. Если модуль написан без namespace — com_ajax не может найти его класс. Результат — HTTP 500. Собственный эндпоинт работает поверх обычного index.php: никаких зависимостей от внутренних API Joomla. Стабильно на Joomla 4, 5, 6. Меньше рисков при обновлении ядра.
Вопросы и ответы
Про цены и сроки
Сколько стоит свой AJAX-эндпоинт?
Стоимость зависит от задач проекта — назовём после аудита. Считаем смету по составу работ: фиксируем в договоре.
Сколько занимает разработка?
Отвечаем в течение рабочего дня. Базовая реализация — 2–3 рабочих дня: код, тесты, документация. Если нужны нестандартные параметры (мультиязычность, ACL) — обсуждаем сроки отдельно.
Что если module_id неправильный?
Плагин вернёт ошибку в JSON — сайт не падает. Пользователь увидит сообщение «Не удалось загрузить материалы».
Обрабатываются ли query-параметры?
Да, все ac_ajax-параметры проверяются и валидируются. Остальные игнорируются. Prepared statements защищают от SQL-инъекций.
Нужен свой AJAX-эндпоинт?
Напишем под вашу задачу — с ACL, prepared statements и JSON-ответом. Бесплатный аудит — без обязательств. Пришлём расчёт в течение 1 рабочего дня.
Обсудим задачу →




Messenger Max