Идеология MODX
Менеджер в MODX Revolution структурирован следующим образом:
• Controllers (контроллеры)
• Templates (шаблоны)
• Connectors (конекторы)
• Processors (процессоры)
Controllers (контроллеры) — PHP страницы, загружаемые до рендеринга страницы. Они подхватывают информацию и назначают Smarty переменные.
Контроллеры абстрагируются в рамках MODx Revolution как «modAction». т.е, пользователь может создать менеджер страниц, просто создавая файлы, а затем создать объект modAction. Это позволит разработчику добавлять контроллеры в верхнем меню. MODx кэширует действия карты ($ MODx-> ActionMap) для быстрого и легкого перенаправление на соответствующий контроллер.
Контроллеры в свою очередь не манипулируют данными, а просто получают их.
Шаблоны (Templates) — Smarty шаблоны (http://smarty.php.net ), которые, прежде всего являются XHTML шаблонами со Smarty тегами и JS. Они используются для отделения кода из содержания, и будут загружены на основе их параллельного контроллера.
Connectors (конекторы) — единичные PHP скрипты, требующие файл connectors/index.php. Они пересылают данные к процессорам на обработку или удаленную выбороку данных запросов, которые затем возвращают его к запросу AJAX, сделанных в файлах JS. Они на основе переменной $ _REQUEST ‘action’ , указанной в запросе JS, определяют процессор для загрузки.
Конекторы заблокированы для получения запросы только из авторизованных источников для предотвращения внутреннего взлома.
Processors (процессоры) — являются «винтиками» MODX. Вызываются только контроллеры или соединители, и никогда не обращются напрямую. Они выбирают записи из базы данных, и выделяют задачи, для выполнения (используя структуру CRUD), что позволяет быстро и легко произвести отладку.
Они посылают сообщения об ошибках с помощью класса modJSONError PHP, который является абстракцией класса уровня абстракции, который позволяет легко JSON-отформатированные сообщения об ошибках, которые будут отправлены обратно в XMLHttpRequest браузера.
Основные определения MODX
Сегодня мы поговорим об основных определениях MODX, чтобы вы в дальнейшем не терялись во всяких чанках, телевизорах и тому подобном.
Add-on (аддон/дополнение/плагин/модуль) — сторонний компонент (3PC), который не изменяет, но обеспечивает дополнительную функциональность ядру MODx.
Asset (актив) — любой тип ресурса файла, который обычно находится в каталоге /assets, расположение зависит от того как это определено в постоянной MODX_ASSETS_PATH. Может включать в себя компоненты (файлы изображений, CSS, JavaScript, классов, библиотеки и т.д.) сторонних производителей.
Back-end (админ панель) — синоним слова интерфейс менеджера MODx.
Category (категория) — необязательное имя классификации, которое можно присоединить к любому элементу, чтобы отделить его от других подобных объектов.
Chunk (чанк) — кусок html без исполняемых кодов, который можно использовать для встраивания в шаблоны, другие чанки, либо вызвать в снипете (TV). Чанк можно вызвать при помощи метки в виде [[$ChunkName]].
Component (компонент) — также называется 3PC или «Сторонний компонент». Как правило, обеспечивает дополнительную функциональность для MODx в виде надстроек, шаблонов и дополнений.
Content Type (тип контента/ содержимого) — задает MIME-тип, расширение, и двоичный (бинарный) параметр для любого ресурса.
Context (контекст) – хранилище (разделитель) ресурсов и настроек, которые можно использовать для решения множества задач; обычно используется для создания нескольких контекстных сайтов, многоязычных сайтов и т.д.
Context Setting (настройка контекста) — создает новую установку или отменяет системные установки.
Document (Документ) — Конкретный тип ресурса, который может быть контейнером для четырех видов ресурсов: Документов, Web-ссылок, статических ресурсов и символических ссылок (в большинстве случаев это обычная веб-страница).
Document Identifier (идентификатор документа) — смотрите идентификатор ресурса.
Element (элемент)— какой-либо элемент: шаблон, шаблон переменной, кусок, фрагмента, плагин, категория, или набор свойств в дереве элементов менеджера.
Extension (расширение) — компонент, который изменяет MODx ядро, например: механизмы кэширования, или манипуляции контекстных классов.
File Resolver (Файл распознаватель) — тип xPDOVehicle преобразователя, который копирует файлы с исходного расположения в целевое расположение.
Friendly URL (дружественный URL/ЧПУ) — URL адрес веб страницы без каких либо параметров, например http://сайт.ru/contact.html, в место http://имя-сайта.ru/index.php?id=1.
Language Tags (языковые метки/теги) — метки в виде [[%LanguageStringKey]], ссылающиеся на MODx лексикон.
Lexicon (словарь/лексикон) — это словарь слов и фраз, который используется для интернационализирования админ панели и могут быть использованы для локализации дополнений и расширений ядра. Он заменяет устаревшие языковые файлы MODx и позволяет настраивать записи непосредственно из админ панели.
Lexicon Topic (тема) — набор лексикон записей, относящихся к конкретной теме. MODx только загружает лексикон записи, в случае необходимости, тем самым уменьшает время загрузки.
Link Tags (ссылки метки/теги) — метки вида [[~ ResourceId]], ссылающиеся на URL конкретного ресурса.
Manager (менеджер) — фоновый интерфейс MODx.
Namespace (пространство имен) — организационный тег для компонентов, используемый для идентификации лексикон записей настроук и других объектов, связанных с компонентами на сайте. Также определяет абсолютный путь, в котором компонент может быть найден.
Placeholder Tags (теги/метки заполнителя) — метки вида [[+ PlaceholderName]], ссылающиеся на MODx заполнители, обычно устанавливается с помощью вызова $MODx->setPlaceholder (‘placeholderName’, ‘ value ‘) в сниппете или плагине.
Resource Field (поле ресурса) — любе из полей таблицы site_content, таких как PageTitle, longtitle, introtext, alias, menuindex и другие, доступны только через documentObject.
Property (набор) — используется для установки определенного параметра элемента.
Property Set (набор свойств) — коллекция переменных используется для определенной цели с элемента.
Resource (ресурс) — тип контейнера, что интерпретируется парсером для извлечения содержимого. Может иметь любое количество производных классов; наиболее распространенным является документ.
Resource Identifier (идентификатор ресурса) — так называемый идентификатор документа или ресурса. Это число в скобках в дереве ресурсов админ панели, который однозначно идентифицирует указанный ресурс.
Resource Tags (метки/ теги ресурсов) — метки вида [[*ResourceField / TV]], которые могут быть использованы для обозначения ресурсов полей или переменных шаблонов (TV).
Resolver for xPDOVehicles (резольвер для xPDOVehicles) — пост-процессор: сценарий или предопределенное действие, вычисляемое после удаления или установки транспортного класса (Vehicle). Арбитры всегда вызывается после объектов транспортного класса (после вызова метода save()) и может выполнять действия на MODx прежде чем что-нибудь еще произойдет в процессе Установка/Удаление.
Setting Tags (метки/теги настройки) — метки вида [[+ + SettingName]], ссылающиеся на системные настройки MODx, пользовательские настройки и настройки контекста.
Snippet (сниппет) — php код, исполняемый во время обработки шаблона.
Snippet Tags (метки/теги сниппетов) — метка вида [[SnippetName]], ссылающиеся на вызов фрагмента кода.
Static Resource (статический ресурс) — конкретный тип ресурса, который является прямой ссылкой на файл, расположенный на сайте MODx. Содержание заменяется содержимым этого файла.
Symlink (символьная ссылка) — тип ресурса, который ссылается на локальный MODx ресурс. Содержание ресурса замещает собой содержимое символьной ссылки.
System Setting (настройка системы) — переменная доступная в пределах всего сайта MODx. Может быть изменена при настройке контекста и пользовательских настроек.
Template Variables, сокращенно TV (переменные шаблона) — особый вид ресурса поля, привязанный к шаблону, который используются для расширения стандартных полей, созданных пользователем. Вызывается следующим тегом: [[*tv]].
Transport Package (транспортный пакет) — упакованная и сжатая коллекция механизмов переноса, которые могут быть легко распределены («транспортированы») с одного ядра рабочей области в другую.
Transport Provider (транспортный поставщик) — веб-сервис, который позволяет производить удаленную установку транспортных пакетов, непосредственно из админ панели MODx.
Transport Vehicles (механизмы переноса) — контейнер, который инкапсулирует любой объект, который может быть распределен с помощью транспортного пакета. Механизмы переноса хранят свои данные в переносимом формате.
User Setting (пользовательские настройки) — настройка конкретного пользователя, можно вносить новые настройки или переопределять подобные настройки контекста или системные настройки.
Weblink (веб-ссылка) — тип ресурса, который ссылается на конкретный URL или MODx ресурс, перенаправляющий посетителя на этом URL или ресурс.
Validator for xPDOVehicles (валидатор для xPDOVehicles) — сценарий или предопределенное действие, которое выполняется до установки или удаления транспортного класса. Если валидатор возвращает истину (true), то процесс установки/удаления будет происходить в обычном режиме. Если валидатор возвращает ложь (false), то MODx не будет удалять или устанавливать пакет.
Валидатор может использоваться для проверки существования директории и доступности ее для записи, а так же для определения наличия на сервере определённой версии MySQL и PHP.
xPDOVehicle — базовый класс механизма переноса «xPDOVehicle», который хранит экземпляры объекта xPDOObject (которые представляют собой строку данных в таблице), при их использовании, вместе с различными атрибутами, контролирующими процесс установки/удаления объекта в рабочем пространстве ядра (см. валидаторы xPDOVehicle и резольверы xPDOVehicle).
MODX файлы — структура каталогов
Каталог MODX Revo разбит на подкаталоги, каждый из которых имеет свой набор обязанностей и задач. Часть этих каталогов можно переименовать и переместить, и их расположение может быть сконфигурировано во время установки.
После установки MODX, если вы зайдете в дерево каталогов, то увидите следующую структуру:
рассмотрим их.
connectors/
Здесь содержаться точки входа для AJAX-запросов, которые в свою очередь не делают никаких манипуляций с базой данных; они просто загружают главный класс MODX, затем проверяют данные запроса, и обрабатывают запрос, указав на соответствующий файл процессора.
Например, когда мы создаем ресурс, мы спрашиваем connectors/resource/index.php?action=create. Файл index.php будет включать в себя базовый файл (connectors/index.php) , который инициализирует MODX, обрабатывать любые пользовательские переключения, и сканировать GET или POST запросы. connectors/resource/index.php будет «обрабатывать» запрос и вызывать нужный файл процессор.
Дополнительные файлы
• connectors/index.php — данный файл полезен при создании собственных коннекторов. Для этого нужно включить этот файл в коннекторы, а затем обработать запрос , используя $modx->request->handleRequest();
core/
Является основой для всех библиотек MODX Revo. Практически все, что нужно, за исключением файлов менеджера и файлов установки, находятся в этом каталоге.
core/cache/ — содержит все кэш-файлы MODX. Лексикон, элементы, ресурсы, RSS каналы, и данные Smarty генерируются по требованию MODX, а это значит, они кэшируются только после первого доступа.
core/cache/logs/ — здесь Вы найдете файл error.log, который содержит дату, время, ошибки, которые были зарегистрированы в MODX. Чтобы произвести запись в данный файл, вы можете использовать метод $modx->log().
core/cache/mgr/ — этот каталог содержит данные кэша контекста. Он кэширует любые настройки контекста, которые были определены по умолчанию в параметрах системы.
core/cache/rss/ — кэш-память каждого RSS Feed в MODX.
core/cache/web/ — кэш MODX Revolution разделен на несколько частей. В каждом контексте есть файл context.cache.php. Этот файл, как файл config.cache.php, за исключением того, что он только кэширует настройки, которые были переопределены в настройках системы по умолчанию. Любой контекст можно переопределить в настройках системы. Кроме того, кэш веб контекста будет содержать отдельные каталоги для ресурсов и элементов. Ресурс с идентификатором 5 будет находиться на cache/web/resources/5.cache.php. Этот новый механизм кэширования означает, что время загрузки будет уменьшаться, а предел на число кэшируемых ресурсов исчезнет.
core/components/ — при установке пакета с помощью диспетчера пакетов , core/components/ / Будет создан каталог для хранения любых файлов, необходимых для запуска установленный компонентов (контроллеры, данные модели / схемы, процессоры и файлы классов).
core/config/ — данный каталог содержит файл конфигурации для MODX Revo. Он устанавливает учетные данные базы данных и ряд MODX_ констант для правильной работы вашего сайта.
core/docs/ — данный каталог содержит файл changelog.txt, лицензию GPL, а также любые обучающие программы, которые были созданы для революции.
core/error/ -данный документ содержит шаблонизации по умолчанию для сообщений об ошибке. Эти страницы можно настроить.
core/export/ — в MODX Revo после запуска функции экспорта, там будут располагаться экспортируемые HTML файлы Вашего сайта.
core/import/ — для выполнения функции импорта в MODX Revo, необходимо переместить HTML файлы в этот каталог.
core/lexicon/ — здесь хранятся файлы лексикона (перевода), они разбиты на отдельные каталоги, в зависимости от их двузначного кода IANA (например, английские словари хранятся в /core/lexicon/en/). Внутри этих подкаталогов несколько файлов, в формате «topic.inc.php«. А «topic» это просто один файл лексикона. Распределение лексиконов на темы означает , что загружаются только необходимые строки языка, тем самым экономиться память и время загрузки. Так же, все лексиконы хранятся в базе данных MODX, а затем кэшируются по требованию. Это позволяет управлять лексиконом непосредственно из Менеджера, внутри области [Lexicon Management].
Чтобы загрузить лексикон, можно использовать такой формат:
$modx->lexicon->load('lang:namespace:topic');
# Lang — 2-х значный код IANA. Это не является обязательным, и по умолчанию ‘en’.
1. namespace — Каждый лексикон имеет свое собственное пространство имен . Встроенный в пространство имен для MODX является «ядром». Создатели пакета также будут иметь возможность создавать пользовательское пространство имен, а пользователи диспетчера также могут создавать свои собственные пространства имен.
2. topic — Конкретное тема / файл , который вы хотите загрузить.
core/model/ — этот каталог включает модели ядра. В парадигме MVC (модель-представление-контроллер), которая гласит, что должно быть по крайней мере три части приложения. Model (модель), которая содержит структуру базы данных и хуки; View (вид), который является частью GUI приложения, которая не содержит никакой логики — только представления; и Connector (контроллеры), которые соединяют модели. Модель содержит все PHP классы, в том числе процессоры, которые обрабатывают определенные функции — такие, как сохранение фрагментов, удаление чанка и т.д.
core/model/modx/ — MODx Revolution использует xPDO для управления базами данных. xPDO использует идею ‘пакетов’ для различных подключений к различным моделям. Так что , если бы я хотел , чтобы создать свои собственные таблицы, я бы создать новый пакет xPDO, и добавить его в во время выполнения. Таким образом , я мог бы использовать карты и классы ,созданные без необходимости модифицировать ядро MODX. Из этого можно сделать вывод о том, что каталог core/model/modx связывает пакет «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, которые вы можете получить здесь http://smarty.php.net . Smarty является интеллектуальным, объектно-ориентированный шаблонным движком, который использует динамические, изменяемые заполнители. Большинство страниц видно в диспетчере MODX и во время установки шаблона, файлы с разрешением (.TPL) являются Smarty файлами, которые взаимодействует с MODX.
core/packages/ — здесь вы найдете любые транспортные пакеты, загруженные через Управление пакетами, такие как Ace, TinyMCE и т.д. Основной пакет также находится здесь. Это способствует легкой установке и удалению, а также удаленного обновления установленных пакетов. При создании пакета (например, после проверки из SVN), транспорт пакет будет храниться здесь.
core/xpdo/ — MODX Revolution был разработан для использования OpenExpedio (xPDO), расширение к PDO. Он обеспечивает единый интерфейс для работы с базами данных, а также позволяет MODX поддерживать различные платформы баз данных, кроме MySQL. Этот каталог содержит все файлы классов, необходимых xPDO, что позволяет сделать все от кэширования запросов, до построения транспортных пакетов и вывода данных в качестве удобного объекта JSON.
Дополнительные файлы
• core/cache/config.cache.php — Это файл кэша для всех настроек системы в MODX. Их эквиваленты базы данных находятся в таблице _system_settings, и их эквиваленты xPDO modSystemSetting объекты.
• core/cache/sitePublishing.idx.php — этот файл отслеживает интервалы обновления кэша.
• core/cache/mgr/actions.cache.php — отображает все объекты modAction.
manager/
Менеджер бэкенд или админка MODX для создания ресурсов, управления пользователями, а также выполнение общих задач по обслуживанию сайта.
manager/assets/ — этот каталог содержит библиотеки ExtJS, а также реализацию пользовательских ModExt. ModExt расширяет оригинальную библиотеку ExtJS, чтобы сделать процесс разработки более удобным для пользователей.
manager/controllers/ — контроллеры это PHP файлы, привязанные к modActions. Они просто извлекают данные и возвращают их, также служат для визуализации и отображения в браузере. Всякий раз, когда вы загрузите страницу в менеджере, вы в сущности говорите MODX, чтобы он загрузил конкретный контроллер, который просто загружает Smarty шаблон и выводил в браузере любые необходимые JavaScript.
manager/templates/ — этот каталог содержит файлы-шаблоны для каждой страницы менеджера. Они не содержат PHP код, а используются для организации HTML.
Дополнительные файлы
• manager/assets/ext2/ext-all.js — Это основной файл библиотеки Ext, которая должна быть включена на всех страницах Manager (или любой страницы с помощью Ext). Это сжимаются для экономии места, что бы уменьшить время загрузки и скорость загрузки страниц. Тем не менее, если вы делаете много работы JavaScript, вы можете столкнутся с ошибками. Лучший способ избавиться от ошибок, просто переименовать этот файл, а затем переименовать ext-all.js файл и ext-all-debug.js, использовать несжатую версию в процессе разработки. Просто убедитесь , чтобы переключить их обратно после этого!
setup/
Этот каталог является «установочным». Он содержит файлы ,необходимые для запуска программы установки и выполнения новой установки или обновления .
_build/
Этот каталог присутствует только в версии MODx Revolution скачанной с GitHub. Он содержит упакованные MODX файлы, необходимые для установки MODX в базу данных.
Дополнительные файлы
• _build/transport.core.php — Этот файл должен быть выполнен после загрузки MODX Revo, и перед запуском программы установки. После завершения, вы должны заметить «ядро» внутри каталога core/packages/, который будет содержать все необходимые файлы для установки MODX Revolution.
assets/
Этот каталог не присутствует в MODX Revolution по умолчанию, но он является общим для размещения изображений, CSS, JavaScript и других файлов.
assets/components/— при установке пакета с помощью диспетчера пакетов , здесь будет создан каталог для хранения любых необходимых компонентов файлы, такие как JavaScript или изображений.
В следующем произведем основные настройки MODX.