Jump to main content Jump to doc navigation

Корень установки MODX 3 разбит на несколько каталогов, у каждого своя роль. В 3.x каталог core/ должен оставаться по пути /core/ в корне проекта (его нельзя переименовать или перенести). Каталоги manager/ и connectors/ по-прежнему можно переименовать при расширенной установке. См. также Изменения каталога core в 3.0.

Типичная структура верхнего уровня после установки:

  • index.php: фронт-контроллер веб-контекста
  • ht.access: шаблон перезаписи Apache (переименуйте/скопируйте в .htaccess для дружественных URL)
  • composer.json: описание PHP-зависимостей (Composer ставит их в core/vendor/)
  • connectors/: точки входа AJAX / коннекторов
  • core/: код приложения, конфиг, кеш, пакеты, библиотеки vendor
  • manager/: интерфейс Менеджера (бэкенд)
  • setup/: установщик (удалите после установки или обновления)
  • _build/: в основном в Git-клонах, сборка транспортного пакета ядра
  • assets/: по умолчанию не поставляется, обычно используется для медиа и фронтенд-файлов Extras

connectors/

Коннекторы: HTTP-точки входа для AJAX-запросов Менеджера (и других). Сами базу данных не меняют. Они загружают MODX, очищают запрос и передают его процессору.

В 3.x большая часть трафика Менеджера идёт через connectors/index.php с параметром action (например Resource/Create). Это разрешается в класс под core/src/Revolution/Processors/.

Важные файлы

  • connectors/index.php: основной bootstrap коннектора. Пользовательские коннекторы обычно подключают этот файл (или повторяют его bootstrap), затем вызывают $modx->request->handleRequest().
  • connectors/config.core.php: создаётся установщиком, указывает путь к ядру и ключ конфигурации.
  • connectors/system/: несколько отдельных системных коннекторов всё ещё живут отдельными скриптами.

core/

Ядро содержит почти всё, что заставляет MODX работать, кроме ресурсов UI Менеджера и setup. Зависимости управляются Composer и лежат в core/vendor/. Основной код MODX: в core/src/.

core/vendor/

Создаётся командой composer install (и входит в традиционные дистрибутивы). Содержит сторонние библиотеки: xPDO, Smarty, Flysystem, Guzzle, PHPMailer и др. Автозагрузчик Composer: core/vendor/autoload.php. Не правьте это дерево вручную, меняйте зависимости через Composer.

core/src/

Корень PSR-4 для пространства имён MODX\ ("MODX\\": "core/src/" в composer.json). Код приложения 3.x в основном здесь.

core/src/Revolution/

Классы ядра с пространством имён (MODX\Revolution\...): сервис modX, объекты модели, сервисы, контроллеры Менеджера и связанные компоненты.

Заметные подкаталоги:

  • Processors/: обработчики запросов через коннекторы (создание/обновление/удаление списков, браузер, безопасность и т. д.)
  • Controllers/: классы контроллеров страниц Менеджера
  • Services/: общие сервисы (HTTP-клиент и другие, зарегистрированные в контейнере MODX)
  • Transport/: поддержка сборки и установки транспортных пакетов
  • Sources/: драйверы источников медиа
  • Smarty/: интеграция Smarty в MODX (modSmarty)
  • mysql/: MySQL-специфичные файлы карт и классов xPDO для объектов ядра

core/model/

В основном зарезервирован под XML-схему и тонкую заглушку обратной совместимости.

  • core/model/schema/: XML-схемы для генерации карт и классов при разработке (modx.mysql.schema.xml, схемы transport/sources и связанные файлы). На каждый фронтенд-запрос не читаются.
  • core/model/modx/modx.class.php: устаревшая заглушка, подключающая автозагрузчик Composer для старых путей include.

Классы модели и процессоры в runtime лежат в core/src/Revolution/, а не в старом дереве классов core/model/modx/ из 2.x.

core/include/

  • deprecated.php: вспомогательные функции совместимости для устаревших API эпохи 2.x, где ещё есть алиасы.

core/cache/

Сгенерированные файлы кеша: конфигурация, контексты, ресурсы, элементы, лексиконы, Smarty и др. Безопасно очищать (MODX пересоберёт по запросу). Логи: в core/cache/logs/ (главный файл: error.log). Записи пишите через $modx->log().

Кеш контекста (например web и mgr) хранит переопределённые настройки контекста и для web: закешированные ресурсы/элементы, например cache/web/resources/12.cache.php.

core/components/

Создаётся при установке Extras. Каждый пакет обычно получает core/components/<package>/ для PHP, который не должен быть доступен из веба (процессоры, код модели, закрытые ресурсы).

core/config/

Содержит config.inc.php (учётные данные БД, пути и связанные опции). Создаётся и обновляется установщиком. Держите файл закрытым и делайте резервные копии.

core/docs/

Changelog (changelog.txt), текст лицензии и version.inc.php.

core/error/

Шаблоны страниц ошибок для серьёзных сбоев, когда MODX не может нормально запуститься.

core/export/ и core/import/

Каталоги для инструментов экспорта/импорта HTML в Менеджере и сторонних Extras (export/: вывод, import/: файлы для импорта).

core/lexicon/

Файловые темы лексикона по коду культуры (например core/lexicon/en/). Темы: файлы вроде default.inc.php. Записи можно переопределить через управление лексиконами, тогда они хранятся в базе.

Загрузка темы в коде:

$modx->lexicon->load('lang:namespace:topic');
  • lang: необязательный ключ культуры (по умолчанию текущая, часто en)
  • namespace: обычно core для встроенных строк или пространство имён Extra
  • topic: имя файла темы без .inc.php

core/packages/

Загруженные и собранные транспортные пакеты, включая core.transport.zip для setup. Управление пакетами читает и пишет сюда.

Важные файлы кеша

  • core/cache/config.cache.php: закешированные системные настройки. Очистка core/cache/ заставляет пересобрать их из базы.
  • core/cache/sitePublishing.idx.php: отслеживает время авто-публикации/снятия с публикации, это не кеш всего контента сайта.

manager/

Бэкенд Менеджера для редактирования ресурсов, элементов, пользователей и системных настроек.

manager/assets/

Фронтенд-ресурсы UI Менеджера:

  • ext3/: библиотеки Ext JS 3 для Менеджера
  • modext/: слой ModExt MODX и виджеты Менеджера поверх Ext JS
  • lib/, fileapi/: вспомогательные JS-библиотеки

manager/controllers/

PHP-скрипты, которые загружают страницы Менеджера (под manager/controllers/default/ для темы по умолчанию). Они готовят данные и регистрируют компоненты Ext JS / ModExt, более тяжёлая логика: в классах под core/src/Revolution/Controllers/.

manager/templates/

Smarty-шаблоны страниц Менеджера (manager/templates/default/). Это HTML/Smarty, не бизнес-логика на PHP.

Важные файлы

  • manager/index.php: фронт-контроллер Менеджера
  • manager/config.core.php: создаётся установщиком, указывает на ядро

setup/

Установщик и инструмент обновления. Запускайте для новых установок и обновлений, затем удалите каталог setup/. Содержит свои контроллеры, шаблоны, языковые файлы и CLI-точку входа (cli-install.php). См. Установка и Установка из командной строки.

В целях безопасности после использования в setup создаётся каталог .locked. Установщик откажется запускаться, пока этот каталог на месте.

_build/

Присутствует при установке из Git (и похожих dev-раскладках). Используется для сборки core/packages/core.transport.zip командой php _build/transport.core.php после установки зависимостей Composer. На продакшене с традиционным пакетом не нужен. См. Установка из Git.

assets/

Минимальный checkout ядра по умолчанию не создаёт этот каталог, но традиционные установки и почти все сайты используют его для медиа, CSS и JavaScript.

assets/components/

Веб-доступные файлы Extras (JS, CSS, изображения), установленные через управление пакетами, обычно зеркалят core/components/<package>/.

См. также

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
  • deJaya
  • JT Skaggs
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

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

Learn more