Модуль для Modx: Quickstart

Как-то давно нужно было написать небольшой модуль для Modx. Это был мой первый опыт работы с этой CMS. Тогда удалось найти пример простого модуля и, немного его подредактировав, я получил то, что мне было нужно. Недавно снова нужно было сделать нечто подобное и мне пришлось обращаться к прошлому заказчику за доступом в Админ-панель его сайта, чтобы вспомнить, как я там всё это сделал. Дабы больше не терроризировать заказчиков подобными просьбами я решил написать небольшой мануал о том, как быстро создать модуль для Modx. Возможно вам эта статья тоже будет полезна, если вы столкнулись с подобной проблемой.

Сразу хочу предупредить, что приведенный мной пример подойдет как заготовка только для простого модуля (Одна таблица в БД. Операции: вставка, удаление, редактирование записей) . Этот код будет понятен новичкам, т.к. там сделано всё очень просто. Пояснения к модулю я тоже буду писать, чтобы было понятно новичкам.

В примере таблица состоит из 4 полей:

  • ID – идентификатор (автоинкремент)
  • TITLE – заголовок
  • ENUM – какой-то набор значений
  • PUBLISHED – флажок публикации

Версия ModX, с которой я работал: 1.0.10.

Модуль состоит из 2 частей:

  1. Backend. Представляет собой набор инструментов для вставки, удаления, редактирования и просмотра записей таблицы в админ-панели Modx.
  2. Frontend. В приведенном примере это просто вывод всех записей таблицы в виде списка.

Зайдите в Админ-панель MODX: http://your_site/manager/: Модули > Управление модулями > Новый модуль. В открывшейся форме можно ввести только «Название модуля» и «Код модуля (php)». В поле «Код модуля (php)» вводим вот этот код. (Можете ввести для начала «echo “hello world”;» и посмотреть, что получится).   Жмем «сохранить». Теперь в списке модулей появился новый модуль. Кликаем по пиктограмме с шестерёнками и в контекстном меню выбираем «Запуск модуля».

Не знаю что нужно сделать, чтобы ссылка на запуск модуля появилась в основном меню. У меня она  появилась сама, спустя некоторое время.

При запуске модуля скрипт проверяет существует ли таблица в БД. Если нет, то предлагет ее установить. Если таблица найдена, то выводится ее содержимое и ссылки на вставку, редактирование и удаление записей. В коде думаю всё будет понятно тем, кто владеет начальным уровнем PHP и javascript. Поясню только основную схему работы. Есть невидимая post-форма с полями «action» и «item_id». Клики на ссылки-действия обрабатываются js-функцией postForm. В зависимости от action скрипт выполняет те или иные действия, после чего производит редирект на основную страницу модуля.

Чтобы отобразить на сайте какие-то данные нашего модуля, для начала нужно создать соответствующую страничку. В левом меню админ-панели отображена структура сайта. Выбираем необходимый узел этой структуры, кликаем правой кнопкой мыши и в контекстном меню выбираем «дочерний ресурс». Заполняем необходимые поля (не забываем отметить checkbox «публиковать»). Во вкладке «Настройки страницы» уберите активность checkbox-а «Кешируемый», иначе после каждого изменения вам придется чистить кеш. Жмем «сохранить», после чего в структуре появится новый узел. Кликаем по нему правой кнопкой и в появившемся меню выбираем «просмотр». В новой вкладке откроется страница. Чтобы вывести на этой странице какой-либо php-код, нужно создать так-называемый сниппет.

В админ панели переходим Элементы > Управление элементами > Сниппеты. Кликаем по ссылке «Новый сниппет». Вводим название сниппета, например «test» и php-код – код для frontend. В содержимом созданной ранее страницы вводим «[[test]]». Вместо этой конструкции ModX вставит результат работы сниппета.

Комментарии

Добавить комментарий
  • Hairs,
    28.10.2015 12:00

    +1