We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
Subscribe: RSS
  • Аналогичная тема была неожиданно закрыта автором, но подобные вопросы периодически возникают, так что я попытаюсь описать варианты реализации AJAX в MODx. В связи с появлением и осмыслением новых материалов сообщение исправлено.

    Для начала напомню, что AJAX – это технология, при которой после загрузки страницы выполняется программа на JavaScript, которая обращается к серверу в интернете в асинхронном режиме. Сервер обрабатывает запрос и отсылает ответ, который программа на JavaScript может обработать, чтобы изменить содержимое страницы. При этом меняется только нужный фрагмент, а полная перезагрузка страницы не происходит.

    В MODx возможны три варианта использования AJAX, различающиеся тем, какую программу на PHP следует выполнить на сервере при асинхронном запросе и что в этой программе следует сделать.
    1. При запросе на сервере выполняется index-ajax.php. Примером такого варианта может служить сниппет AjaxSearch до версии 1.7 включительно, работающий в режиме AJAX. Особенностью варианта является минимизация дополнительных действий, выполняемых при асинхронном запросе, при этом среда MODx не загружается. Достоинства: высокая эффективность, не тратятся лишние ресурсы на сервере при запросе, ответ сервера будет получен быстрее. Недостатки: так как среда MODx не загружается, невозможно использовать API MODx и подгружать чанки, сниппеты и тому подобное.
    2. При асинхронном запросе на сервере выполняется index.php, как и при обычном запросе. Пример можно посмотреть здесь, вариант Full MODx solution (полное решение MODx). Особенностью этого варианта является полноценный вызов MODx при каждом асинхронном обращении. Достоинства: способность использовать все средства MODx и в случае работы с AJAX. Недостатки: каждый асинхронный вызов требует значительных ресурсов сервера, что снижает эффективность и увеличивает время отклика сервера.
    3. Промежуточный вариант подразумевает вызов через index-ajax.php с частичной загрузкой ядра MODx. Этот подход используется в AjaxSearch версии 1.7.1 и описан в упоминаемой выше статье как вариант Lightweight solution (облегченное решение). Полноценное использование всех средств в этом режиме невозможно, но некоторые функции будут работать. По эффективности этот вариант расположен между двумя другими.

    Дополнительно отмечу, что получить нужную информацию из базы данных при использовании первого метода достаточно просто, хотя и не получится использовать API MODx. Зная структуру базы и умея работать с PHP и MySQL, можно реализовать практически любую задачу. Если не нужно выполнять сложную обработку чанков, сниппетов и параметров, среду MODx при асинхронном запросе лучше не загружать. Однако оценка сравнительной эффективности всех трех вариантов достаточно сложна, так что выбор чаще делается на основе личных предпочтений.

    Для третьего метода в программе рекомендуется выполнить следующие команды:
    // Защита от некоторых опасностей при асинхронном вызове
    require_once(MODX_MANAGER_PATH . '/includes/protect.inc.php');
    // Установка режима MODx API
    define('MODX_API_MODE', true);
    // Инициализация парсера
    include_once(MODX_MANAGER_PATH.'/includes/document.parser.class.inc.php');
    $modx = new DocumentParser;
    // Включение доступа к базе данных MODx
    $modx->db->connect();
    // Включение доступа к основным параметрам MODx
    $modx->getSettings();
      Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
      Статьи о MODx, регулярно новые публикации
    • 2 вариант зато дает максимальные возможности насколько я понял... тема эта интересная, и хоть modx на главной странице и рекламируется как ajax cms for today, реальной информации на эту тему почти нет здесь.
      • Quote from: rav3n at Apr 30, 2008, 10:18 PM

        2 вариант зато дает максимальные возможности насколько я понял...
        Дает возможности использования всех средств MODx по генерации документов. В принципе на сервере все выполняется так же, как и при обычном вызове, без AJAX. Все различия – только в работе программы на JavaScript на стороне клиента.
        Вообще, никаких особых средств для реализации AJAX в MODx нет, и фраза «ajax cms for today» выглядит как рекламное преувеличение.
          Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
          Статьи о MODx, регулярно новые публикации
        • Quote from: AKots at May 01, 2008, 02:13 AM

          Вообще, никаких особых средств для реализации AJAX в MODx нет, и фраза «ajax cms for today» выглядит как рекламное преувеличение.
          Абсолютный факт. AJAX используется внутри системы управления, что, видимо, и использовали разработчики для рекламы своей системы.
          С другой стороны - в MODx, равно как и в большинстве других CMS, нет никаких ограничений по использованию AJAX на своих сайтах, т.к. это просто один из методов получения данных с сервера.
            Разработка сайтов и программных модулей на MODX.
            Опыт работы на MODx с 2005 года. Высокое качество.
            Компания Baltic Design Colors: http://www.bdcolors.ru.
          • FYI HowTo: Use AJAX with modxAPI updated.
            Thanks for your feedbacks to improve this article.
            • Ссылка не работает!
              • исправлено
                • Изменил первое сообщение в теме grin
                    Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                    Статьи о MODx, регулярно новые публикации
                  • Можно пару примеров...
                    • В качестве примера посмотрите как работает AjaxSearch.
                        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                        Статьи о MODx, регулярно новые публикации