CMS и PHP

Доработка сайтов на MODX

MODX даёт разработчику почти полный контроль над выводом без навязанной структуры контента. Разбираем терминологию платформы и то, какие задачи она решает лучше и хуже других CMS.

Обновлено 2026-09-3015 мин чтения

MODX выделяется среди CMS философией «ничего не навязываем»: платформа не диктует структуру контента, а даёт набор строительных блоков — ресурсы, шаблоны, чанки, сниппеты и Template Variables (TV), — из которых разработчик собирает именно то, что нужно проекту. Это привлекает студии, которым важен контроль над HTML-выводом без борьбы с готовыми шаблонами других систем.

Словарь MODX для тех, кто не работал с платформой

  • Ресурс (Resource) — единица контента: страница, документ, статья — аналог записи в других CMS
  • Шаблон (Template) — определяет, какой код обрамляет вывод ресурса, и какие TV к нему прикреплены
  • Чанк (Chunk) — переиспользуемый кусок HTML-разметки без логики, вроде партиала
  • Сниппет (Snippet) — кусок PHP-кода, который можно вызвать из шаблона или чанка и получить динамический вывод
  • Template Variable (TV) — дополнительное настраиваемое поле у ресурса (картинка, дата, связь с другим ресурсом)

Revolution vs Evolution: важно не путать версии

MODX Evolution (старая линейка, последняя версия 1.1) и MODX Revolution (актуальная линейка, 2.x/3.x) — фактически разные платформы с общими корнями и похожей терминологией, но несовместимым внутренним устройством. Сайты на Evolution до сих пор встречаются в проде, и их доработка требует знания старого API — прямой перенос кода из документации Revolution не сработает. Перед оценкой задачи первый вопрос — какая линейка используется, это меняет весь подход.

Как собирается динамическая логика в Revolution

  1. Создаётся сниппет — PHP-функция, которая получает параметры и возвращает HTML или данные
  2. Сниппет вызывается из шаблона или чанка через плейсхолдер [[snippetName? &param=`value`]]
  3. Для повторяющихся блоков вывода (карточки товаров, список статей) используется связка сниппет + чанк-итератор
  4. Кеширование настраивается на уровне сниппета (кешируемый [[ ]] или некешируемый [[! !]] вызов)

Такой подход даёт полный контроль над HTML на выходе — в отличие от компонентных CMS, где вывод часто завязан на готовый шаблон компонента. Плата за это — больше ручной работы: там, где Bitrix или WordPress дадут готовый компонент из коробки, на MODX типовую функцию (например, форму с валидацией) часто пишут с нуля или подключают через готовый пакет (например, FormIt для форм, pdoTools для быстрых выборок).

Типовые задачи и подходящие инструменты

  • Формы обратной связи и заявок — пакет FormIt с валидацией и email/CRM-хуками
  • Быстрые выборки и списки ресурсов — pdoTools вместо более медленного штатного getResources
  • Многоязычность — пакет Babel для связи ресурсов на разных языках
  • Кастомные типы контента — MIGX для табличных повторяющихся данных внутри одного ресурса

Производительность: где искать проблему

На MODX-проектах замедление чаще всего вызвано некешируемыми сниппетами на посещаемых страницах (символ восклицания в вызове [[! !]] отключает кеш и заставляет выполнять PHP-код при каждом запросе) либо использованием устаревшего getResources вместо оптимизированного pdoTools на страницах с большим числом элементов. Оба случая диагностируются быстро — достаточно посмотреть, какие сниппеты вызываются на медленной странице и в каком режиме кеширования.

Для каких проектов MODX особенно уместен

  • Сайты с нестандартной вёрсткой, где важен полный контроль над HTML без наследия готовых шаблонов
  • Проекты, где разработчик хочет собрать ровно ту структуру данных, что нужна, без избыточной универсальности
  • Средние по размеру корпоративные сайты и порталы услуг без требований к тысячам однотипных страниц

При передаче проекта новому подрядчику на MODX критично передать не только доступы, но и карту: какие сниппеты где вызываются, какие TV обязательны для шаблона, какие пакеты установлены через менеджер дополнений. Без этой «легенды» даже простая правка текста в шапке может занять день поисков по чанкам — не потому что платформа сложная, а потому что логика размазана по десятку маленьких файлов с похожими именами.

FAQ

В чём разница между чанком и сниппетом в MODX?

Чанк — статичный кусок HTML-разметки без логики, переиспользуемый партиал. Сниппет — исполняемый PHP-код, который может обращаться к базе данных, принимать параметры и возвращать динамический результат.

Можно ли перенести сайт с MODX Evolution на Revolution?

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

Почему сайт на MODX работает медленно?

Чаще всего причина — некешируемые сниппеты на популярных страницах или использование медленного getResources вместо pdoTools. Диагностика занимает немного времени, если знать, что искать.

Нужен ли для MODX специальный хостинг?

Нет, достаточно обычного хостинга с PHP и MySQL/MariaDB, соответствующего требованиям конкретной версии Revolution. Особых требований к инфраструктуре платформа не предъявляет.

SEO-продвижение · Создание сайтов · Ещё в разделе «CMS и PHP»

Читайте также

16 мин

Доработка сайтов на Joomla

У Joomla своя логика расширения — не такая, как у WordPress или Битрикс. Разбираем архитектуру компонентов, модулей и плагинов и то, как это влияет на стоимость и риски доработки.

17 мин

Доработка сайтов на Drupal

Drupal — платформа для сложных информационных структур с гибкой моделью данных. Разбираем, как устроена доработка через модули и хуки, и почему это отличается от подхода Joomla или WordPress.

16 мин

Вёрстка сайта

Хорошая вёрстка — это не только совпадение с Figma на одном разрешении, а предсказуемое поведение в браузерах, быстрый первый экран и структура, которую потом не стыдно натянуть на CMS.

Нужен сайт под спрос и заявки?

Разберём задачу, предложим структуру и ориентир по срокам. Без воды и «продающих» слайдов.