Створення компонентів modx

У першому опитуванні ми визначили тему для першого курсу - створення компонента MODX. Потім ми вирішили писати не аби що, а потрібний і корисний компонент розсилок по юзерам сайту, який ми потім подаруємо всім користувачам MODX.

Ну а сьогодні я закінчив всі необхідні приготування і оголошую про запуск нової програми!

Приблизний план першого курсу:
  1. Налаштування робочого місця і IDE PhpStorm
  2. Розбір структури компонента, навіщо потрібні assets, core і інші?
  3. Основи Git і перший Комміт заготовки компонента на Github
  4. Продумуємо логіку роботи, визначаємо схему і модель таблиці в БД
  5. Перші начерки логіки, збираємо і встановлюємо альфа-версію пакету
  6. Інтерфейс адмінки на ExtJS. Створюємо групи розсилок і підписуємо на них користувачів.
  7. Інтерфейс адмінки на ExtJS. Створюємо розсилку і прив'язуємо її до групи.
  8. Перевіряємо роботу нашого інтерфейсу, пробуємо щось розіслати.
  9. Фронтент. Сніппет виведення доступних підписок користувачеві.
  10. Фронтент. Робота з замовленням відпискою від розсилки.
  11. Тестування, збірка пакета, закінчення робіт.
Кажу відразу - список неточний, все може 10 разів помінятися, так як ми пишемо новий компонент. а не розбираємо існуючий. Ви цілком можете щось змінити в роботі, запропонувати свої ідеї або рішення.

За часом нас ніщо не обмежує, я закінчив всі поточні справи і готовий приділити курсам цілий місяць. Доступ можна оплатити в новому розділі сайту.

Ця замітка вступна, вона оголошує про початок робіт і мені вже потрібна ваша допомога. Будь ласка, запропонуйте назву для нашого компонента. так як просте і лаконічне Subscribe вже зайнято.

Без хорошого назви починати ніяк не можна!

Для комфротной розробки нам потрібно гарне оточення. Особисто я використовую локальний веб-сервер Nginx + Php5-fpm + Mysql на Mac Os X, але це далеко не звичайна конфігурація.

Набагато простіше і доступніше використовувати будь-який хостинг з доступом до сайту по SFTP. Неважливо, який саме: shared, vps або cloud.

Всі пристойні доповнення в MODX поширюються транспортними пакетами - це такі zip файли з певною структурою.

При установці вони можуть здійснювати різні дії: створювати таблиці, змінювати системні налаштування, копіювати файли і т.п.

Писати транспортний пакет з нуля дуже довго, клопітно і значною кількістю помилок. Набагато краще використовувати перевірену заготовку modExtra - саме з її допомогою написані майже всі мої доповнення.

Тому, сьогодні нам потрібно завантажити modExtra зі сховищ і розібрати структуру майбутнього компонента: навіщо там так багато файлів і директорій?

Звичайно, ми розберемося і з збирачем пакета - як він працює і конфігурується.

Закінчуємо з підготовкою до початку активної розробки.

Сьогодні нам потрібно вивантажити заготовку на сервер, перейменувати, створити репозиторій на GitHub і відправити в нього перший Ком. А для цього потрібно буде налаштувати PhpStorm на роботу з git.

Синхронізація з сервером

Після того, як ми зв'язали наш локальний проект з віддаленим сервером, в PhpStorm з'явилися нові пункти в контектном меню:
Створення компонентів modx

  • Вивантажити файли на сервер
  • Завантажити файли з сервера
  • Синхронізувати віддалені і локальні файли
Важливо розуміти, що перший і другий пункт можуть перезаписувати існуючі файли. тому використовувати їх потрібно дуже акуратно.
В основному, краще використовувати синхронізацію - вона покаже відмінності в файлах і дозволить вибрати дії з ними. Правда є і недолік - при синхронізації потрібно прочитати всі видалені файли, а це займає час. Добре, що PhpStorm дозволяє синхронізувати не тільки весь проект, а й кожну окрему директорію, і навіть файл.

Підготовчі роботи закінчені, і сьогодні ми приступаємо безпосередньо до розробки компонента.

Ми пишемо компонент розсилок, тому потрібно продумати основну логіку роботи. Звертаю вашу увагу на те, що наша мета - навчитися писати компоненти для MODX, а не написати кращу розсилку в світі. Тому прошу вас відразу зменшити амбіції і не пропонувати додати мега-функціонал.

З функціоналом приблизно визначилися, тепер потрібно написати схему БД, щоб зберігати наші дані.

На минулому занятті ми визначилися з зразковим функціоналом, написали схему таблиць і згенерували модель xPDO для роботи з БД MySql.

А сьогодні нам потрібно зібрати і встановити першу версію пакету і розібратися, як працюють Custom Manager Pages (CMP).

З огляду на, що ми використовуємо заготовку modExtra, і вже розібрали, як вона працює - збірка пакета полягає у виконанні скрипта build.transport.php на сервері.

Якщо з конфіге build.config.php виставлена ​​константа PKG_AUTO_INSTALL, то компонент буде відразу встановлено на сайт.

На минулому уроці ми розібралися з контролерами Custom Manager Page (CMP) нашого компонента, і з'ясували, що основний сенс їхнього існування - підготувати всі необхідні файли для виведення сторінки.

Поки у нас використовуються js файли від modExtra, і сьогодні нам потрібно їх вивчити і переписати для Sendex.

Причому, всі ці елементи вже підкоряються якусь логіку: одна кнопка перемикає сторінки, інша викликає модальне вікно і т.д.

В принципі, все необхідне для написання пристойного доповнення до MODX я вже розповів.

Ми знаємо структуру компонента, вміємо збирати його в пакет, управляємо контролерами і міняємо інтерфейс. Навіть трохи навчилися працювати з GitHub. Справа за малим - власне написати функціонал.

Цей урок дуже об'ємний, тут багато лістингів коду, з поясненнями. Якщо щось незрозуміло - не потрібно переживати і турбуватися, просто пам'ятайте, що завжди можна подивитися вихідний код вже готових доповнень і самого MODX - там є приклади на всі випадки життя.

Отже, сьогодні нам потрібно поліпшити в адмінці таблицю і спливаюче вікно для созднія підписки. Ось, що у нас вийде в підсумку

Створення компонентів modx

На минулому занятті ми зробили таблицю підписок і вікно створення.

Тепер нам потрібно додати вікно зміни підписки, і складність тут в управлінні передплатниками - нам потрібно вікно з вкладками.
На першій ті ж поля, що і при створенні, а на другий - додавання і видалення користувачів.

Для роботи з користувачами, потрібно написати свої процесори: вибірка, пошук і додавання \ видалення до підписки.
  • Створення компонентів modx
  • Створення компонентів modx

На цьому уроці ми закріплюємо роботу з ExtJS. Тут не буде нічого нового, ми малюємо чергову таблицю і задаємо для неї процесори.

Схожі статті