Корневой каталог MODX разделен на несколько подкаталогов, каждый со своим набором обязанностей и задач.
Для наглядности можете скачать дистрибутив с CMS MODX traditional и распаковать его, увидите следующую структуру.
Часть этих каталогов можно переименовывать и перемещать, и изменять их расположение во время установки (MODX advansed), директория assets создается во время установки. Разберем все основные каталоги.
connectors/
В каталоге «connectors» содержатся файлы-коннекторы, отвечающие за обработку AJAX-запросов и взаимодействие с другими приложениями и сервисами. Здесь можно настроить соединение с внешними API или добавить свои собственные скрипты для работы с данными.
Коннекторы не производят никаких манипуляций с базой данных самостоятельно: они просто загружают основной класс MODX, очищают любые данные запроса, а затем обрабатывают запрос, указывая на соответствующий файл процессора.
- connectors/index.php— особо полезный файл, при создании ваших собственных коннекторов. Просто включите этот файл в ваши коннекторы, а затем обработайте запрос, используя
$modx->request->handleRequest()
;
core/
Каталог «core» содержит основные файлы и код MODX Revolution. Здесь находится ядро системы, отвечающее за обработку запросов, управление базой данных и работу с расширениями. Внутри «core» вы также найдете подкаталоги, такие как «config» для конфигурации системы и «model» для моделей базы данных.
Большая часть всего, что вам нужно, за исключением файлов менеджера и установочных файлов, находится в этом каталоге.
core/cache/
Данный каталог содержит все файлы кеша, сгенерированные MODX. Лексиконы, ресурсы, элементы, данные RSS и Smarty, все это генерируются по требованию MODX, т.е. они кэшируются только после первого доступа.
core/cache/logs/
Регистрация всех файлов в MODX производится здесь. Здесь вы найдете файл error.log
, который содержит дату, время, файл и ошибку, записанную MODX.
Чтобы записать запись в этот файл, вы можете использовать метод $modx->log()
.
core/cache/mgr/
Этот каталог содержит данные кэша для контекста mgr (Manager). Как и любой кэш контекста, он будет кешировать любые параметры контекста, которые были переопределены из их системных настроек по умолчанию.
core/cache/rss/
Кеш каждого RSS-канала в MODX.
core/cache/web/
Еще одна директива с кэшем, которая разделен на несколько частей. Каждый контекст (т.е. web
и mgr
) имеет файл context.cache.php
. Этот файл похож на файл config.cache.php
, за исключением того, что он кэширует только те настройки, которые были переопределены из их системных настроек по умолчанию. Любой контекст может переопределить настройку системы.
Кроме того, кэш веб-контекста будет содержать отдельные каталоги для ресурсов и элементов. Ресурс с идентификатором 12 будет найден в cache/web/resources/12.cache.php
. Этот новый механизм кэширования означает, что время загрузки уменьшится, а ограничение количества кэшируемых ресурсов исчезнет.
core/components/
Когда вы устанавливаете пакет, используя Менеджер пакетов, в core/components/
будет создан каталог для хранения любых файлов, необходимых для запуска установленного компонента. Как правило, все файлы, необходимые для запуска в диспетчере, такие как контроллеры, данные модели схемы, процессоры и файлы классов, должны храниться здесь, а также файлы, которые вам не нужны для доступа в Интернет.
core/config/
Этот каталог содержит файл конфигурации для MODX Revolution. Он устанавливает учетные данные базы данных и ряд MODX_констант для правильной работы вашего сайта.
core/docs/
Этот каталог содержит файл changelog.txt
, лицензию GPL и все учебные пособия, созданные для Revolution.
core/error/
Он содержит шаблоны для сообщений об ошибках в клиентской части Revolution. Вы можете настроить эти страницы здесь.
core/export/
После запуска функции экспорта в MODX Revolution экспортированные файлы HTML для вашего сайта будут находиться здесь.
core/import/
Чтобы запустить функцию импорта в MODX Revolution, вам нужно переместить HTML-файлы в этот каталог.
core/lexicon/
Здесь лежат языковый файлы (лексиконы), которые разделяются на отдельные каталоги в зависимости от их двузначного кода IANA (например, английские лексиконы хранятся в /core/lexicon/en/
). Внутри этих подкаталогов находятся несколько файлов в формате topic.inc.php
. «topic» — это просто один файл лексикона. Разделение лексиконов по темам означает, что загружаются только строки _required_language
, что экономит память и время загрузки.
Все лексиконы хранятся в базе данных MODX, а затем кешируются по требованию. Это позволяет управлять лексиконами непосредственно из админки в области «Управление лексиконами».
Чтобы загрузить лексикон, можно использовать такой формат:
$modx->lexicon->load( 'lang:namespace:topic' );
lang — 2-значный код IANA. Это необязательно, и по умолчанию ‘en’.
- namespace — У каждого лексикона свое Пространство имен. Встроенное пространство имен для MODX — «ядро». Создатели пакетов также смогут создавать собственные пространства имен, а пользователи Manager также могут создавать свои собственные пространства имен.
- topic — Конкретная тема/файл, который вы хотите загрузить.
core/model/
Это модель: M в MVC (модель-представление-контроллер), которая является парадигмой ОО, которая утверждает, что в приложении должно быть как минимум три части. Модель, которая содержит структуру базы данных и привязки к ней View, который является частью графического интерфейса приложения, который не содержит никакой логики — только представление; и контроллеры, которые соединяют модель с представлением.
Итак, MODX делает модель своего рода похожей. На самом деле мы делаем модель MVC/C, в которой мы добавляем в модель точку доступа Connector и процессоры. Это будет объяснено позже, когда придем к ним. Вам сейчас нужно знать то, что модель содержит все классы PHP, которые запускают Revolution, в том числе процессоры, которые обрабатывают определенные функции, такие как сохранение сниппетов, удаление сниппетов и т.д.
core/model/modx/
Здесь лежат классы, которые являются либо xPDOObjects
— являются PHP-классами, представляющими таблицы в БД (т.е. modsnippet.class.php
— это PHP-класс, который является объектом modx_site_snippets
), либо они являются функциональными классами, как modcachemanager.class.php
.
Подкаталоги в этой папке — не включая mysql или процессоры — являются подкатегориями классов, которые загружаются следующим образом: $modx->loadClass('transport.modPackageBuilder');
с «.» будучи разделением каталогов.
core/model/modx/mysql/
Этот каталог содержит файлы классов и карт для каждого объекта xPDO. Карты — это просто массивы PHP, содержащие структуру таблицы базы данных, на которую они ссылаются.
Другие платформы баз данных, такие как pgsql, mssql и другие, также появятся здесь.
core/model/modx/processors/
Этот каталог содержит отдельные файлы процессора, используемые при манипулировании базой данных. К ним никогда не обращаются напрямую, а вместо этого получают доступ через соединители. Это позволяет заблокировать их для предотвращения несанкционированного доступа.
core/model/schema/
Схема — это XML-представление базы данных MODX. Это используется при создании новых карт и классов, но никогда не читается и не анализируется, когда MODX работает. По большей части вы можете игнорировать этот каталог, так как он в основном используется для разработки.
core/model/smarty/
Здесь содержатся библиотеки Smarty — это интеллектуальный объектно-ориентированный шаблонизатор, использующий динамические, модифицируемые заполнители. Большинство страниц, видимых в диспетчере и во время установки, представляют собой файлы шаблонов Smarty (.tpl), с которыми взаимодействует MODX.
Например, когда вы редактируете ресурс (часто документ) в Менеджере, вы просматриваете страницу, сгенерированную контроллером, в manager/controllers/resource/staticresource/update.php
После установки характеристик ресурса в массиве $resource
этот код отображает страницу:
$modx->smarty->assign('resource',$resource); return $modx->smarty->fetch('resource/staticresource/update.tpl');
Плейсхолдеры Smarty в update.tpl заполняются данными, хранящимися в массиве $resource
.
core/packages/
Здесь вы найдете любые транспортные пакеты, которые вы скачали через Менеджер пакетов раздел Revolution, такой как Ace, TinyMCE, PdoTools и т.д. Базовый пакет также находится здесь. Это позволяет легко устанавливать и удалять, а также удаленно обновлять установленные пакеты.
Когда вы создаете пакет (например, после извлечения из Git), транспортный пакет будет храниться здесь.
core/xpdo/
MODX Revolution был разработан для использования OpenExpedio (xPDO), расширения для PDO. Он обеспечивает единый интерфейс для управления базами данных и позволяет MODX поддерживать различные платформы баз данных, кроме MySQL.
В этом каталоге содержатся все файлы классов, необходимые xPDO для выполнения всего: от кэширования запросов до построения транспортных пакетов и вывода данных в виде удобного объекта JSON.
Эти классы используются внутри MODX, и разработчикам никогда не придется иметь дело с ними напрямую.
Некоторые файлы
- core/cache/config.cache.php — Это кеш-файл для всех Системных настроек в MODX. Их эквиваленты базы данных находятся в _system_settings таблица, и их эквиваленты xPDO являются объектами modSystemSetting.
- Tip — Если вы когда-либо были заблокированы компонентом CAPTCHA, вы можете отредактировать этот файл и установить use_captcha to ‘0’ отключить капчу. Затем вы можете войти и отключить CAPTCHA в Системные настройки.
- core/cache/sitePublishing.idx.php — этот файл отслеживает интервалы обновления кэша.
manager/
Менеджер — это бэкенд или область администрирования MODX для создания ресурсов, управления пользователями и выполнения общих задач по обслуживанию сайта.
manager/assets/
Этот каталог содержит ExtJS библиотеки, а также пользовательская реализация ModExt. ModExt расширяет оригинальную библиотеку ExtJS, чтобы сделать разработку более удобной для пользователей.
manager/controllers/
Контроллеры — это файлы PHP, которые генерируют страницы менеджера. Они просто извлекают данные и возвращают или выводят их в браузер для рендеринга и отображения. Всякий раз, когда вы загружаете страницу в Менеджере, вы фактически указываете MODX загрузить определенный Контроллер, который просто загружает шаблон Smarty и выводит любой необходимый JavaScript в браузер.
manager/templates/
Этот каталог содержит файлы шаблонов для каждой страницы менеджера. Они не содержат код PHP, а используются для организации HTML. Если вы ищете файл Smarty .tpl для конкретной страницы менеджера, проверьте каталог manager/templates/default/
.
Известные файлы
- manager/assets/ext2/ext-all.js — Это основной файл библиотеки Ext, который должен быть включен на всех страницах диспетчера (или любой странице, использующей Ext). Он сжат, чтобы сэкономить место, сократить время загрузки и ускорить загрузку страниц. Однако, если вы выполняете много работы с JavaScript, вы неизбежно столкнетесь с некоторыми загадочными ошибками из-за сжатия. Лучший способ справиться с этим — просто переименовать этот файл, а затем переименовать файл ext-all.js в ext-all-debug.js, чтобы использовать несжатую версию во время разработки. Просто обязательно переключите их потом!
setup/
Этот каталог содержит файлы, необходимые для запуска установшика движка: установка MODX или его обновление.
_build/
Этот каталог присутствует только в версии MODX Revolution, загруженной с сервера Subversion (а также в дистрибутиве SDK). Он содержит упакованные файлы данных ядра MODX, необходимые для установки MODX в базу данных.
- _build/transport.core.php — Этот файл должен быть выполнен после загрузки MODX Revolution и до запуска программы установки. После завершения вы должны заменить «core» каталог внутри вашего каталога
core/packages/
, который будет содержать все необходимые Транспортные средства для установки MODX Revolution.
assets/
Этот каталог по умолчанию отсутствует в MODX Revolution, но, здесь обычно размещают изображения, CSS, JavaScript и другие медиафайлы.
assets/components/
Когда вы устанавливаете пакет, используя Менеджер пакетов, в каталоге assets/components/
будет создан каталог для хранения любых необходимых файлов компонентов, таких как JavaScript или изображения.
Знакомство с этой структурой позволит разработчикам быстрее вникнуть в тонкости программирования под MODX (создания пакетов и различных нестандартных решений) и обеспечить более эффективное развитие и поддержку проекта на MODX Revolution.
Смотрите также: Глоссарий MODX