Ресурсы MODX: страницы, поля, настройки и работа с деревом

Дерево ресурсов MODX, поля страницы и ее отображение на сайте MODX Revo
Ресурсы MODX - объекты сайта с собственными ID, полями и настройками. Обычный документ хранит содержание страницы, а назначенный шаблон определяет его вывод. В дереве ресурсов создают страницы и разделы, задают родителя, управляют публикацией, перемещением и удалением. В уроке разобраны четыре основных типа ресурсов, стандартные поля, вкладки редактора, восстановление из корзины и изменение иконок.

В 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_ — префикс базы, выбранный при установке; у вас он может быть другим.

обзор таблицы site_content

Таблица содержит поля и параметры ресурсов. Связанные изображения и документы могут храниться в каталогах сайта, а поля — содержать пути к ним.

Для обычного редактирования используем менеджер MODX, а не прямое изменение записей в phpMyAdmin.

Знакомимся с редактором ресурса

Откройте начальную страницу в дереве. В обычной форме MODX есть вкладки «Документ», «Настройки» и «Группы ресурсов».

3 вкладки в новом документе модх

Вкладка «Документ»

Здесь находятся основные данные страницы.

Стандартные поля ресурса 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&nbsp;[[++settings_version]]!</p>

p задает HTML-абзац, а [[++settings_version]] — тег MODX. Два плюса обозначают обращение к настройке: система подставляет ее значение вместо вызова.

Ссылки на документацию ниже — справочные материалы, а не пакеты для обязательной установки. Стартовый текст оставим, а практику выполним на новых документах.

Создаем раздел и дочернюю страницу

Обычный документ может содержать собственный текст и быть родителем других страниц. Создадим такую структуру:

Практикум
    Первый материал

1. Создаем «Практикум»

На вкладке «Ресурсы» нажмите кнопку создания документа.

Создание нового ресурса

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

Посмотрите присвоенный ID: он понадобится для проверки родителя дочерней страницы.

2. Добавляем «Первый материал»

Откройте контекстное меню «Практикума» и выберите создание дочернего документа.

создание дочернего документа

  1. Укажите заголовок «Первый материал» и псевдоним pervyi-material.
  2. Заполните содержимое.
  3. Проверьте parent: там должен быть ID «Практикума».
  4. Проверьте шаблон, опубликуйте и сохраните страницу.

В визуальном редакторе набирайте обычный текст. Для поля исходного 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. Структуру этих тегов изучим в следующем уроке.

Редактируем и проверяем результат

  1. Откройте «Первый материал» в дереве.
  2. Измените один абзац и сохраните ресурс.
  3. Обновите страницу в браузере.
  4. Откройте исходный 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-редактор

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

Публикация по расписанию

Поле Назначение
createdon Дата и время создания.
editedon Дата и время последнего изменения.
publishedon Дата и время публикации.
pub_date Запланированная публикация.
unpub_date Запланированное снятие с публикации.

Не путайте фактическую дату публикации с расписанием. Для учебных документов без расписания соответствующие поля оставляем пустыми.

Кто работал с ресурсом
Поле Назначение
createdby ID создателя.
editedby ID последнего редактора.
publishedby ID пользователя, последним опубликовавшего ресурс.
deletedby ID пользователя, удалившего ресурс.

Это идентификаторы, а не имена. Создатель ресурса также не обязательно является автором текста.

Вкладка «Группы ресурсов»

Здесь ресурс связывают с группами для контроля доступа. Это не разделы дерева: ограничения определяются связанными политиками, группами пользователей и настройками контекста.

Для учебных страниц ничего менять не нужно. Подробности разобраны в уроке прав доступа. Публикация или скрытие пункта меню не заменяют такую защиту.

Перемещение, порядок и копирование

Чтобы переместить страницу, измените ее родителя и сохраните. При доступных правах и настройках менеджера также используется перетаскивание в дереве. После перемещения проверьте положение и URL.

Для изменения порядка среди соседних документов используется menuindex. Меньшие значения идут раньше при сортировке по этому полю. Меню и другие списки могут использовать собственную сортировку.

Для похожей страницы используйте дублирование из контекстного меню. У копии проверьте заголовок, alias, родителя, шаблон, содержание и публикацию.

Удаление и восстановление

Создайте отдельный ненужный учебный документ. Откройте его контекстное меню и выберите удаление либо используйте соответствующую кнопку редактора.

Удаление ресурса

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

Корзина - управление удаленными ресурсами

После восстановления проверьте публикацию. Окончательное удаление выполняется отдельно: перед ним нужно проверить выбранные записи и дочерние ресурсы. Не очищайте всю корзину ради одного документа.

После окончательного удаления восстановление может потребовать резервной копии. Для этого упражнения достаточно удалить и восстановить запись.

Как поменять иконки в дереве ресурсов

Значок можно задать у шаблона. Он используется его ресурсами в дереве менеджера и не меняет favicon или оформление публичного сайта.

Иконки в дереве MODX Revo

  1. На вкладке «Элементы» откройте шаблон нужного ресурса.
  2. Запомните исходное значение поля «Значок».
  3. Укажите класс иконки, например icon-home для рассматриваемого интерфейса MODX 2.
  4. Сохраните шаблон и обновите дерево.

прописываем класс иконки к шаблону modx

Результат:

иконки в дереве modx

Если несколько страниц используют один шаблон, изменение может затронуть все эти документы. Классы выбирайте из набора менеджера: иконки Bootstrap на сайте не обязательно доступны в админке.

Если результат отличается от ожидаемого

Проблема Что проверить
Страница не открывается посетителю Публикацию, удаление, расписание и права. Откройте адрес без сессии менеджера.
Открывается другой документ ID в адресе, домен и подкаталог установки.
Измененный текст не появился Сохранение ресурса, назначенный шаблон и вызов нужного поля. После этого при необходимости очистите кеш MODX.
Видны HTML-теги вместо абзацев Режим ввода и отсутствие ненужного экранирования HTML-содержимого.
Ресурс не появился в меню hidemenu и параметры компонента меню. Дерево ресурсов не является готовой навигацией сайта.

Следующий урок

Дальше разберем основной синтаксис MODX: как читать теги, отличать поля от настроек и передавать параметры. После этого создадим собственный небольшой шаблон для нескольких ресурсов.

Вход и управление сайтом через административную панель MODX
← Предыдущая статьяАдминка MODX: вход, основные разделы и восстановление доступа
Следующая статья →Синтаксис MODX: теги, параметры и кеширование
Синтаксис MODX и подстановка данных в HTML-шаблон
Поделиться с друзьями
Алексей

Веб-дизайнер и SEO оптимизатор. Занимаюсь созданием сайтов с 2010 года и их продвижение с 2012 года!

Оцените автора
( 3 оценки, среднее 5 из 5 )
Web-Revenue.ru