Оглавление

Корневой каталог MODx разделен на несколько подкаталогов, каждый со своим набором обязанностей и задач. Некоторые из этих каталогов можно переименовать и переместить, а их расположение можно настроить во время установки.

connectors/

Connectors по существу являются точками входа для запросов AJAX в MODx. Они не делают никаких манипуляций с базой данных самостоятельно. Они просто загружают основной класс MODx, дезинфицируют любые данные запроса, а затем обрабатывают запрос, указывая на соответствующий файл процессора.

Например, при создании ресурса мы запрашиваем connectors/resource/index.php?action=create. Файл index.php будет включать базовый файл (connectors/index.php) который создает экземпляр основного объекта MODx, обрабатывает любое пользовательское переключен Указывается при условии что ресурс обрабатывается не внутри какого-то итератора, типа pdoResources.ие контекста и дезинфицируют запрос GET или POST. Затем connectors/resource/index.php обработает запрос и вызовет правильный файл процессора, про который мы поговорим позже.

Описание известных файлов:
  • connectors/index.php — Этот файл особенно полезен при создании собственных коннекторов. Просто включите этот файл в свои коннекторы, а затем обработайте запрос с помощью $modx -> request -> handleRequest();.

core/

Core — это то, что делает Модэкс — Модексом. Это основа для всех библиотек системы. Все, что вам нужно, за исключением файлов менеджера и файлов установки, находится в этом каталоге.

core/cache/

Каталог кэша содержит все файлы кэша, созданные MODx. Кэш лексиконов, элементов, ресурсов, RSS, данных Smarty и т. д. Они генерируются по требованию MODx. Кэширование происходит после первого обращения к сайту.

core/cache/action_map/

Содержит массив всех идентификаторов контроллеров и пространств имён, доступных в менеджере. Когда включено, actions (или controller maps) будут кэшироваться, чтобы значительно сократить время загрузки страницы менеджера.

core/cache/auto_publish/

Содержит отметку времени, она определяет момент, при наступлении которого произойдет автоматическая публикация ресурса или снятие его с публикации. После наступления этой даты, в этот файл система MODx вписывает другую ближайшую дату публикации или снятия с публикации ресурса.

core/cache/context_settings/

Этот каталог используется для хранения настроек контекстов. Каждый контекст в этом разделе имеет свою категория, а в ней файл настроек. В нем содержится карта ресурсов (идентификаторы родителей и детей), карта псевдонимов, плагины, используемые в контексте и политика доступа.

core/cache/includes/

Данный раздел используется для хранения исходных данных php файлов сниппетов и плагинов. Используются во время их выполнения. Файлы имеют формат: 10.include.cache.php, где 10 — это id сниппета или плагина.

core/cache/lexicon_topics/

Раздел содержит в себе кэш папок и файлов лексиконов. Сначала вы встретите папки языков (en, ru, ua и т. д.). Внутри них лежат файлы и папки с кэшированными данными лексиконов, как сторонних компонентов, так и самого MODx.

core/cache/logs/

Все log файлы системы располагаются здесь. Например тут вы найдете файл error.log, который содержит дату, время, файл и ошибку, которая была зарегистрирована в MODx. Чтобы записать логи в этот файл, вы можете использовать метод $modx->log ().

Пример ниже, выведет в лог надпись «Сообщение в логе».

<?php
$modx->log(1, 'Сообщение в логе');

core/cache/menu/

Этот каталог содержит кэш меню Back-end панели.

core/cache/mgr/

Данный каталог использует шаблонизатор Smarty в качестве своего хранилища и записи в него временных файлов.

core/cache/namespaces/

В каталоге лежит кэш пространства имён, представляющий из себя массивы с некоторыми связующими данными компонентов.

core/cache/resource/

Каталог хранит кэш ресурсов с учетом контекста. При обращении к ресурсу на фронте сайте, появляется папка с названием контекста ресурса, и в ней лежат файлы кэша ресурса, к которому произошло обращение. Файлы имеют формат: 7.cache, где 7 — это id ресурса.

core/cache/rss/

Кэш для RSS-каналов в MODx.

core/cache/scripts/

Каталог содержит исходные коды сниппетов и плагинов, которые впоследствии будут записаны в кэш директорию includes.

core/cache/system_settings/

Каталог содержит глобальную конфигурацию и системные настройки MODx. Этот раздел загружается первым. Он не может быть загружен из другого обработчика кэша, всегда используется только xPDOFileCache.

core/components/

При установке пакета с помощью Package Manager, будет создан каталог core/components/ для хранения файлов, необходимых для запуска установленного компонента.Как правило, любые файлы, необходимые для запуска в Back-end панели, такие как контроллеры, данные модели/схемы, процессоры и файлы классов, должны храниться здесь.

core/config/

Этот каталог содержит файл changelog.txt, файл-лиценизию the GPL license и любые учебные пособия, созданные для MODx Revolution.

Напоминаем, что для большей безопасности вашего сайта, необходимо удалить файл changelog.txt после установки системы.

core/error/

Это каталог содержит шаблоны страниц сообщений об ошибках в интерфейсе MODx Revolution. Вы можете настроить эти страницы здесь.

core/import/

Чтобы запустить функцию импорта в MODx Revolution, вам нужно разместить ваши HTML-файлы в этот каталог. После чего перейти к функции импорта в Back-end панели.

core/lexicon/

В MODx Revolution файлы лексиконов разделяются на отдельные каталоги в зависимости от их двузначного кода IANA (например, английские лексиконы хранятся в /core/lexicon/en/, а русские в /core/lexicon/ru/). Внутри этих подкаталогов находятся файлы в формате topic.inc.php.

Все лексиконы хранятся в базе данных MODx, а затем кэшируются по требованию. Это позволяет управлять лексиконами непосредственно из менеджера, внутри области «Управление словарями».

Чтобы загрузить лексикон, можно использовать следующий код:

<?php
$modx->lexicon->load('lang:namespace:topic');
  1. lang — двузначный код IANA. Необязательная часть, по умолчанию будет использоваться en.
  2. namespace — У каждого лексикона есть свое пространство имен. Встроенное пространство имен для MODx — «Core». Свои собственные пространства имен могут создавать как разработчики пакетов, так и пользователи Back-end панели MODx.
  3. topic — Тема/файл, который вы хотите загрузить.

Например так можно получить русскоязычное значение темы welcome, которая в свою очередь находится в пространстве имён core.

<?php
$res = $modx->lexicon->load('ru:core:welcome');
$res = $modx->lexicon('modx_news');
return $res;

core/model/

Это модель из схемы MVC (model-view-controller), это означает что в приложении должно быть как минимум три части:

  1. Model — содержит структуру базы данных.
  2. View — является частью графического интерфейса приложения (GUI), не содержит никакой логики — только представление.
  3. Controllers — соединяют модель с представлением.

Работа модели в MODx похожа на работу модели в MVC. Фактически мы создаем схему MVC/C, в которой мы добавляем точку доступа коннектора и процессоров к модели. Мы разберем этот момент чуть позже. Важно знать, что модель содержит все классы PHP, которые запускают MODx Revolution, включая процессоры, которые обрабатывают определенные функции — такие как сохранение сниппетов, удаление чанков и т. д.

core/model/modx/

Очередной подкаталог MODx? Да! MODx Revolution использует xPDO для управления базами данных. xPDO использует идею «пакетов» для различных подключений к различным моделям. Поэтому, если бы мы захотели создать свои пользовательские таблицы, правильней было бы создать пакет xPDO и добавить его во время выполнения. Таким образом, мы могли бы использовать и создавать карты и классы, без необходимости изменять ядро MODX. Именно так создаются пакеты для MODx.

Таким образом, можно сделать вывод, что каталог core/model/modx ссылается на пакет «modx». Зайдите внутрь этого каталога и вы увидите множество классов. Эти классы являются объектами xPDOObjects — которые в свою очередь являются классами PHP. Они отражают таблицы в БД (т. е. modsnippet.class.php — это класс PHP, который является объектом modx_site_snippets) или они являются функциональными классами, такими как modcachemanager.class.php.

Подкаталоги в этой папке — не включая mysql или processors — являются подкатегориями классов, которые загружаются следующим образом:

<?php
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, которые можно получить отсюда smarty.net — В этой папке ничего не настроено для работы с MODx — это происходит в другом месте. 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/

Тут вы найдете любые транспортные пакеты, загруженные через раздел управления пакетами в MODx Revolution. Основной пакет также находится здесь. Это позволяет легко устанавливать и удалять, а также удаленно обновлять установленные пакеты.  При создании пакета он будет храниться здесь.

core/xpdo/

MODx Revolution был разработан для использования OpenExpedio (xPDO), расширения для PDO. Он обеспечивает единый интерфейс для управления базами данных и позволяет MODx поддерживать различные платформы баз данных помимо MySQL.

В этом каталоге содержатся все файлы классов, необходимые xPDO для выполнения всего: от кэширования запросов до создания транспортных пакетов и вывода данных в виде удобного объекта JSON.

Эти классы используются самим MODx, и разработчикам никогда не нужно работать с ними напрямую.


manager/

Менеджер — это серверная или административная область MODx для создания ресурсов, управления пользователями и выполнения общих задач по обслуживанию сайта.

manager/assets/

Этот каталог содержит библиотеки ExtJS, а также пользовательскую реализацию ModExt. ModExt расширяет оригинальную библиотеку ExtJS, чтобы сделать разработку более удобной для пользователей.

manager/controllers/

Контроллеры — это PHP-файлы, привязанные к modActions. Они просто извлекают данные и возвращают или выводят их в браузер для рендеринга и отображения. Всякий раз, когда вы загружаете страницу в менеджере, вы фактически говорите MODx загрузить конкретный контроллер, который просто загружает шаблон Smarty и выводит любой необходимый JavaScript в браузер.

manager/templates/

Этот каталог содержит файлы шаблонов для каждой страницы менеджера. Они не содержат PHP кода и используются для организации HTML. Если вы ищете Smarty.tpl-файл для определенной страницы менеджера, проверьте каталог manager/templates/default/.


assets/

Этот каталог по умолчанию отсутствует в MODx Revolution. Здесь обычно размещаются изображения, CSS, JavaScript и другие медиа-файлы.

assets/components/

При установке пакета с помощью диспетчера пакетов будет создан каталог assets/components/, для хранения необходимых файлов компонентов, таких как JS, CSS или изображения.


setup/

Этот каталог содержит файлы, необходимые для запуска программы новой установки системы и или её обновления. В целях безопасности, обычно удаляется после успешной установки системы.


_build/

Этот каталог содержит упакованные файлы основных данных MODx, необходимые для установки MODx в базу данных.