- Что такое ресурс MODX
- Дерево ресурсов: ID и родитель
- Знакомимся с редактором ресурса
- Вкладка «Документ»
- Что находится в начальном содержимом
- Создаем раздел и дочернюю страницу
- 1. Создаем «Практикум»
- 2. Добавляем «Первый материал»
- Открываем страницу и разбираем ее адрес
- Редактируем и проверяем результат
- Почему заполненное поле может не появиться
- Вкладка «Настройки»
- Визуальный редактор
- Публикация по расписанию
- Вкладка «Группы ресурсов»
- Перемещение, порядок и копирование
- Удаление и восстановление
- Как поменять иконки в дереве ресурсов
- Если результат отличается от ожидаемого
- Следующий урок
В MODX страницы создают на вкладке «Ресурсы»: здесь заполняют содержание, назначают шаблон, задают родителя и управляют публикацией.
После знакомства с админкой MODX создадим учебный раздел с дочерней страницей, изменим его содержимое и разберем поля редактора.
Упражнения выполняем стандартным синтаксисом. Fenom показан только для сравнения, включать его сейчас не нужно. Скриншоты относятся к MODX Revolution 2; расположение отдельных полей в другой версии может отличаться.
Что такое ресурс MODX
Ресурс — объект сайта с уникальным ID, полями и настройками. Чаще всего это обычная страница, но существуют и другие типы.
| Тип | Назначение | Пример |
|---|---|---|
| Документ — Document | Страница с содержимым и назначенным шаблоном. | Услуга, статья, контакты. |
| Веб-ссылка — Weblink | Перенаправление на указанный адрес или другой ресурс. | Внешняя ссылка в структуре меню. |
| Символическая ссылка — Symlink | Использование содержания существующего ресурса под другим адресом. | Представление материала в другой части структуры. |
| Статический ресурс — Static Resource | Выдача файла с сервера. | PDF для просмотра или скачивания. |
В этом уроке работаем с документами. Ресурсы находятся на вкладке «Ресурсы», а шаблоны, чанки и сниппеты — на вкладке «Элементы».
Особенности веб-ссылок, символических ссылок и файлов
У Weblink в содержимом указывают URL или ID целевого ресурса. Для внутреннего перехода ID удобнее адреса, который может измениться.
Symlink сохраняет собственный адрес, используя содержание опубликованного целевого ресурса. Это не HTTP-редирект 301.
У Static Resource нужно указать существующий файл, подходящий тип содержимого, например PDF, и способ передачи: inline для отображения или attachment для скачивания. Для прямой выдачи обычно выбирают пустой шаблон, а не HTML-оболочку сайта.
Не выдавайте через статический ресурс конфигурацию и служебные файлы. Статический ресурс, статический элемент и файловое подключение pdoTools — разные механизмы.
Дерево ресурсов: ID и родитель
В левой панели страницы представлены деревом. Одни находятся в корне контекста, другие вложены в родительские ресурсы.

У каждой записи есть собственный id, а поле parent хранит ID родителя. Например, у раздела «Услуги» может быть id 8, а у вложенной страницы — id 12 и parent 8. Для ресурса в корне контекста parent обычно равен 0.
Дерево задает связи между записями, а не физические папки с HTML-файлами. Оно также не выводится автоматически как меню: для этого используется отдельный компонент.
Где хранятся ресурсы
В типичной установке данные находятся в таблице modx_site_content. modx_ — префикс базы, выбранный при установке; у вас он может быть другим.

Таблица содержит поля и параметры ресурсов. Связанные изображения и документы могут храниться в каталогах сайта, а поля — содержать пути к ним.
Для обычного редактирования используем менеджер MODX, а не прямое изменение записей в phpMyAdmin.
Знакомимся с редактором ресурса
Откройте начальную страницу в дереве. В обычной форме MODX есть вкладки «Документ», «Настройки» и «Группы ресурсов».
Вкладка «Документ»
Здесь находятся основные данные страницы.

| Поле | Имя в коде | Назначение |
|---|---|---|
| Заголовок | pagetitle | Основное название ресурса. Указывается при создании страницы. |
| Расширенный заголовок | longtitle | Дополнительный вариант заголовка. |
| Описание | description | Краткое описание, которое можно использовать в метаданных или другом выводе. |
| Аннотация | introtext | Вводный текст, например для анонса в списке. |
| Содержимое | content | Основной текст или HTML страницы. |
| Шаблон | template | ID шаблона, назначенного ресурсу. |
| Псевдоним | alias | Часть адреса при использовании ЧПУ. |
| Пункт меню | menutitle | Отдельный заголовок для меню, если компонент его использует. |
| Атрибуты ссылки | link_attributes | Атрибуты, которые может подставлять шаблон вывода меню. |
| Не показывать в меню | hidemenu | Скрытие из меню при поддержке компонентом. Прямой доступ остается возможным. |
| Опубликован | published | Состояние публикации документа. |
При наведении на подпись поля можно увидеть подсказку с техническим именем и стандартным вызовом.

Это стандартные поля ресурса, а не «стандартные TV». Дополнительные поля TV создаются отдельно и назначаются шаблонам.
Пример атрибутов ссылки
В link_attributes можно указать:
target="_blank" rel="noopener"
Атрибуты появятся только в том выводе, который использует это поле. Запись rel=»nofollow» не закрывает сам ресурс от индексации или просмотра.
Что находится в начальном содержимом
В стартовом документе может быть приветствие:
<p>You have successfully installed MODX Revolution [[++settings_version]]!</p>
p задает HTML-абзац, а [[++settings_version]] — тег MODX. Два плюса обозначают обращение к настройке: система подставляет ее значение вместо вызова.
Ссылки на документацию ниже — справочные материалы, а не пакеты для обязательной установки. Стартовый текст оставим, а практику выполним на новых документах.
Создаем раздел и дочернюю страницу
Обычный документ может содержать собственный текст и быть родителем других страниц. Создадим такую структуру:
Практикум
Первый материал
1. Создаем «Практикум»
На вкладке «Ресурсы» нажмите кнопку создания документа.

- В заголовке укажите «Практикум».
- В псевдониме — praktikum, если поле не заполнено автоматически.
- В содержимом напишите короткое описание раздела.
- Проверьте шаблон. Для упражнения подойдет тот же, что у начального ресурса, если он выводит content.
- Включите публикацию и сохраните документ.
Посмотрите присвоенный ID: он понадобится для проверки родителя дочерней страницы.
2. Добавляем «Первый материал»
Откройте контекстное меню «Практикума» и выберите создание дочернего документа.

- Укажите заголовок «Первый материал» и псевдоним pervyi-material.
- Заполните содержимое.
- Проверьте parent: там должен быть ID «Практикума».
- Проверьте шаблон, опубликуйте и сохраните страницу.
В визуальном редакторе набирайте обычный текст. Для поля исходного HTML подойдет:
<p>Это первый материал учебного раздела.</p>
<p>Его текст можно изменить через ресурс MODX.</p>
Раздел и дочерняя страница создаются одинаковыми документами. Разница в этом упражнении — их положение в дереве и значение parent.
Открываем страницу и разбираем ее адрес
Нажмите кнопку просмотра в редакторе ресурса. Без ЧПУ можно открыть страницу через index.php с ее ID. Например:
index.php?id=12
Вместо 12 используйте ID «Первого материала». Адрес задается относительно установки MODX, включая ее подкаталог, если он есть.
Не путайте:
- id — идентификатор записи.
- alias — псевдоним для дружественного адреса.
- uri — сформированный путь страницы.
При включенных ЧПУ на URL влияют родитель, настройки вложенных адресов, тип содержимого и суффиксы. Поэтому .html не является обязательным окончанием, а родитель сам по себе не гарантирует путь раздел/страница.
Для текущей практики обычного адреса достаточно. Подробную настройку ЧПУ разберем отдельно.
Как поставить ссылку на ресурс
В обрабатываемом MODX содержимом можно использовать ID целевой страницы:
<a href="[[~12]]">Первый материал</a>
Для полного URL с протоколом и доменом:
[[~12? &scheme=`full`]]
Число заменяется вашим ID. Структуру этих тегов изучим в следующем уроке.
Редактируем и проверяем результат
- Откройте «Первый материал» в дереве.
- Измените один абзац и сохраните ресурс.
- Обновите страницу в браузере.
- Откройте исходный HTML через Ctrl+U и найдите измененный текст.

На скриншотах приведены примеры заполнения и сформированного HTML. Учебные значения и разметка вашей страницы могут отличаться.

Почему заполненное поле может не появиться
Ресурс хранит данные, а назначенный шаблон определяет их вывод. Например:
[[*content]]
обозначает место для содержимого открытой страницы. Если шаблон вместо него содержит постоянный текст, изменение content этот текст не заменит.
Аналогично pagetitle не становится H1, а description — meta description без соответствующего вывода. Title и метаданные находятся в head, а не среди обычных абзацев страницы.
Если выбран вариант без назначенного шаблона, вывод строится на содержимом ресурса. Это не то же самое, что назначить созданный шаблон с пустым полем кода.
Обозначения полей: стандартный синтаксис и Fenom
| Поле | Стандартный синтаксис | Fenom — для сравнения |
|---|---|---|
| ID | [[*id]] |
{$_modx->resource.id} |
| Заголовок | [[*pagetitle]] |
{$_modx->resource.pagetitle} |
| Расширенный заголовок | [[*longtitle]] |
{$_modx->resource.longtitle} |
| Описание | [[*description]] |
{$_modx->resource.description} |
| Аннотация | [[*introtext]] |
{$_modx->resource.introtext} |
| Содержимое | [[*content]] |
{$_modx->resource.content} |
Звездочка обозначает поле ресурса, два плюса — настройку. Fenom пока только сравниваем, его настройка для упражнения не требуется.
Вкладка «Настройки»
Здесь задаются положение, поведение и технические параметры документа. Для первого упражнения большинство значений можно оставить по умолчанию.
| Параметр | Имя в коде | Назначение |
|---|---|---|
| Родительский ресурс | parent | ID родителя. |
| Позиция в меню | menuindex | Порядок среди соседних ресурсов при соответствующей сортировке. |
| Тип ресурса | class_key | Документ, веб-ссылка, символическая ссылка или статический ресурс. |
| Тип содержимого | content_type | Ссылка на тип содержимого, например HTML или PDF. |
| Способ передачи | content_dispo | Встроенное отображение или вложение. |
| Контейнер | isfolder | Признак контейнера, используемый в том числе при формировании URL. |
| Доступен для поиска | searchable | Участие во внутреннем поиске. Сам по себе не устанавливает meta robots. |
| Использовать HTML-редактор | richtext | Использование установленного визуального редактора при подходящих настройках. |
| Заморозить URI | uri_override | Ручное задание пути вместо обычного автоматического формирования. |
| Кешируемый | cacheable | Разрешение кеширования ресурса. Не управляет всеми другими уровнями кеша. |
| Удален | deleted | Признак удаления, отличный от снятия публикации. |
Контейнер не является отдельным типом ресурса и не выводит дочерние страницы автоматически. Для такого списка понадобится соответствующий компонент.
Ручной URI используйте под конкретную задачу, а не для обхода непонятного адреса. На рабочем сайте его изменение требует проверки ссылок и перенаправлений.
Визуальный редактор
Флажок «Использовать HTML-редактор» не устанавливает редактор, а влияет на работу уже настроенного дополнения.

Обычный текст набирайте в визуальном режиме, подготовленный HTML — в режиме исходного кода или обычном поле кода. После переключения сохраните ресурс и при необходимости откройте его заново.
Публикация по расписанию
| Поле | Назначение |
|---|---|
| createdon | Дата и время создания. |
| editedon | Дата и время последнего изменения. |
| publishedon | Дата и время публикации. |
| pub_date | Запланированная публикация. |
| unpub_date | Запланированное снятие с публикации. |
Не путайте фактическую дату публикации с расписанием. Для учебных документов без расписания соответствующие поля оставляем пустыми.
Кто работал с ресурсом
| Поле | Назначение |
|---|---|
| createdby | ID создателя. |
| editedby | ID последнего редактора. |
| publishedby | ID пользователя, последним опубликовавшего ресурс. |
| deletedby | ID пользователя, удалившего ресурс. |
Это идентификаторы, а не имена. Создатель ресурса также не обязательно является автором текста.
Вкладка «Группы ресурсов»
Здесь ресурс связывают с группами для контроля доступа. Это не разделы дерева: ограничения определяются связанными политиками, группами пользователей и настройками контекста.
Для учебных страниц ничего менять не нужно. Подробности разобраны в уроке прав доступа. Публикация или скрытие пункта меню не заменяют такую защиту.
Перемещение, порядок и копирование
Чтобы переместить страницу, измените ее родителя и сохраните. При доступных правах и настройках менеджера также используется перетаскивание в дереве. После перемещения проверьте положение и URL.
Для изменения порядка среди соседних документов используется menuindex. Меньшие значения идут раньше при сортировке по этому полю. Меню и другие списки могут использовать собственную сортировку.
Для похожей страницы используйте дублирование из контекстного меню. У копии проверьте заголовок, alias, родителя, шаблон, содержание и публикацию.
Удаление и восстановление
Создайте отдельный ненужный учебный документ. Откройте его контекстное меню и выберите удаление либо используйте соответствующую кнопку редактора.

Ресурс помечается как удаленный, но это еще не окончательное стирание записи. Для восстановления откройте корзину или управление удаленными ресурсами, выделите свой документ и выполните восстановление.

После восстановления проверьте публикацию. Окончательное удаление выполняется отдельно: перед ним нужно проверить выбранные записи и дочерние ресурсы. Не очищайте всю корзину ради одного документа.
После окончательного удаления восстановление может потребовать резервной копии. Для этого упражнения достаточно удалить и восстановить запись.
Как поменять иконки в дереве ресурсов
Значок можно задать у шаблона. Он используется его ресурсами в дереве менеджера и не меняет favicon или оформление публичного сайта.
- На вкладке «Элементы» откройте шаблон нужного ресурса.
- Запомните исходное значение поля «Значок».
- Укажите класс иконки, например icon-home для рассматриваемого интерфейса MODX 2.
- Сохраните шаблон и обновите дерево.
Результат:
Если несколько страниц используют один шаблон, изменение может затронуть все эти документы. Классы выбирайте из набора менеджера: иконки Bootstrap на сайте не обязательно доступны в админке.
Если результат отличается от ожидаемого
| Проблема | Что проверить |
|---|---|
| Страница не открывается посетителю | Публикацию, удаление, расписание и права. Откройте адрес без сессии менеджера. |
| Открывается другой документ | ID в адресе, домен и подкаталог установки. |
| Измененный текст не появился | Сохранение ресурса, назначенный шаблон и вызов нужного поля. После этого при необходимости очистите кеш MODX. |
| Видны HTML-теги вместо абзацев | Режим ввода и отсутствие ненужного экранирования HTML-содержимого. |
| Ресурс не появился в меню | hidemenu и параметры компонента меню. Дерево ресурсов не является готовой навигацией сайта. |
Следующий урок
Дальше разберем основной синтаксис MODX: как читать теги, отличать поля от настроек и передавать параметры. После этого создадим собственный небольшой шаблон для нескольких ресурсов.















