Jump to main content Jump to doc navigation

Для кого эта страница

Здесь описана среда для разработки Extras (сниппеты, плагины, CMP, транспортные пакеты) на локальном сайте MODX Revolution.

Если вы правите ядро MODX, смотрите Contribute: среды разработки (форк, upstream, tooling).

Полный разбор одного Extra от сниппета до пакета — в Создании дополнения. Эта страница — чеклист окружения, на которое опирается тот учебник.

Что нужно

  • Локальный веб-сервер и PHP/MySQL по требованиям к серверу для вашей версии MODX (Revolution 3.x — PHP 8.1+, для git-установки ещё Composer)
  • Рабочий локальный сайт MODX, который можно ломать и переустанавливать
  • Редактор или IDE (PhpStorm, VS Code и аналоги)
  • По желанию: Git для проекта Extra и Composer, если ставите MODX из git

Отдельный MODX на каждый Extra не обязателен. Один локальный сайт тянет несколько дополнений в разработке.

Установка локального MODX

Два пути:

  1. Обычный zip — скачать с modx.com/download, распаковать в веб-корень, запустить Setup. Быстрее всего для работы над Extra, если не нужен bleeding-edge core.
  2. Из git — клон ветки 3.x, composer install, сборка core-пакета, затем Setup. Нужно, если вы ещё и вносите правки в ядро. См. установку из Git.

После Setup войдите в Менеджер и убедитесь, что сайт открывается. Чистите core/cache/, если эксперименты с путями и конфигом пошли криво.

Задайте этой установке уникальный session_name (например modxlocaldevsession), чтобы cookie не пересекались с другими локальными сайтами MODX на том же домене. После смены очистите core/cache/ и войдите снова.

Рекомендуемая раскладка каталогов

Держите Extra вне дерева ядра MODX. Тогда история Git чистая, и вы не закоммитите файлы core по ошибке.

Пример (пути под свою машину):

/www/modx/                 ← установка MODX Revolution (веб-корень или vhost)
/www/doodles/              ← проект Extra (свой Git-репозиторий)
  assets/components/doodles/
  core/components/doodles/
  _build/

После установки транспортный пакет кладёт файлы в core/components/yourpkg/ и assets/components/yourpkg/ внутри сайта MODX. В разработке вы либо:

  • держите ту же раскладку в отдельном клоне и указываете MODX пути через Namespace / системные настройки, либо
  • делаете symlink или копируете в дерево MODX (работает, но Git и обновления усложняются)

В Создании дополнения проект лежит в /www/doodles/, а MODX смотрит на него через системные настройки путей. Так удобно работать командой.

Типичные каталоги Extra:

Путь Назначение
core/components/yourpkg/ PHP: model, elements, lexicon, processors, controllers
assets/components/yourpkg/ JS, CSS, картинки, connector.php для AJAX CMP
_build/ Скрипты сборки и данные пакета (в zip не входят)

См. также структуру компонента и транспортные пакеты.

Подключить MODX к Extra

  1. Создайте в Менеджере Namespace (yourpkg) с путями на core и assets вашего проекта.
  2. Добавьте системные настройки вроде yourpkg.core_path и yourpkg.assets_url (или те ключи, которые ждёт Extra), чтобы сниппеты и сервисы находили файлы вне core/components/ по умолчанию.
  3. Зарегистрируйте элементы (сниппет, плагин, пункт меню CMP), которые ходят по этим путям, или поставьте их скриптом сборки/установки.

Пока пути не сходятся, $modx->getService() и процессоры падают с ошибками «нет класса/файла». Сначала Namespace и настройки, потом очистка кэша.

Если Extra открывается с другого локального пути, чем Менеджер (например Менеджер /modx/manager/, assets Extra /doodles/), поставьте session_cookie_path в /, чтобы сессия входа была общей. После смены очистите кэш и войдите снова.

Настройки, которые ускоряют работу над Extra

Настройка Зачем
cache_lexicon_topics = Нет Правки лексикона видны без борьбы с кэшем топиков
session_name Уникальное имя на каждый локальный сайт
session_cookie_path Общая сессия на разных локальных путях

Пока крутите PHP, после смены путей или class map чистите core/cache/ или используйте «Управление → Очистить кэш». Для схемы/модели пересоберите карты скриптом Extra, затем снова очистите кэш.

Упаковка

Когда Extra работает из Менеджера:

  1. Оставьте _build/ в репозитории Extra (resolvers, data vehicles, скрипт сборки)
  2. Соберите транспортный пакет в core/packages/ (или куда пишет ваш build)
  3. Поставьте или обновите пакет на чистом локальном MODX для проверки

Пошаговая упаковка — в Создании дополнения, часть III. Для простых Extra, собранных в основном в Менеджере, подойдёт и PackMan.

Куда идти дальше

  1. Эта страница — локальный сайт и раскладка Extra
  2. Введение для разработчика — MVC², коннекторы, процессоры
  3. Создание дополнения — сниппет, CMP, пакет
  4. Создание компонентов — ещё один полный курс (с упором на PhpStorm)
  5. Пользовательские страницы Менеджера и xPDO для углубления

Смотрите также

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • JT Skaggs
  • deJaya
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$195 per month—let's make that $500!

Learn more