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, картинки
_build/ Скрипты сборки и данные пакета (в zip не входят)

Отдельного connector.php у компонента нет. AJAX менеджера идёт на единый /connectors/index.php, а параметр namespace в запросе направляет его в код вашего компонента в core/components/yourpkg/.

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

Подключить 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_noncore_lexicon_topics = Нет Правки лексикона из не-core пространств имён видны без кэша топиков. cache_lexicon_topics — другая настройка: она решает только, пишется ли файл кэша, поэтому устаревшие записи читаются в любом случае
session_name Уникальное имя на каждый локальный сайт. По умолчанию пусто — остаётся имя сессии PHP
session_cookie_path Общая сессия на разных локальных путях. По умолчанию пусто — подставляется MODX_BASE_URL

Пока крутите PHP, после смены путей или class map чистите core/cache/ или используйте «Контент → Очистить кэш». Меню «Управление» в 3.x нет — пункт лежит в меню сайта («Контент»). Для схемы/модели пересоберите карты скриптом 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

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

Learn more