Объяснение структуры каталогов MODx
Подробное объяснение структуры и архитектуры каталогов MODx.
Оглавление
Корневой каталог 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');
lang
— двузначный код IANA. Необязательная часть, по умолчанию будет использоваться en.namespace
— У каждого лексикона есть свое пространство имен. Встроенное пространство имен для MODx — «Core». Свои собственные пространства имен могут создавать как разработчики пакетов, так и пользователи Back-end панели MODx.topic
— Тема/файл, который вы хотите загрузить.
Например так можно получить русскоязычное значение темы welcome, которая в свою очередь находится в пространстве имён core
.
<?php
$res = $modx->lexicon->load('ru:core:welcome');
$res = $modx->lexicon('modx_news');
return $res;
core/model/
Это модель из схемы MVC (model-view-controller), это означает что в приложении должно быть как минимум три части:
- Model — содержит структуру базы данных.
- View — является частью графического интерфейса приложения (GUI), не содержит никакой логики — только представление.
- 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 в базу данных.
Время запросов: 0,1177 s
Количество запросов: 24
Источник: cache