Reemake Digital Agency · Модуль AJAX Content

Как плагин 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 рабочего дня.

Обсудим задачу →
8 (950) 442-49-00 reemake@inbox.ru Max Messenger Max

с 8:00 до 20:00 (МСК)

г. Пермь