CMS и PHP
Доработка сайтов на MODX
MODX даёт разработчику почти полный контроль над выводом без навязанной структуры контента. Разбираем терминологию платформы и то, какие задачи она решает лучше и хуже других CMS.
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
- Создаётся сниппет — PHP-функция, которая получает параметры и возвращает HTML или данные
- Сниппет вызывается из шаблона или чанка через плейсхолдер [[snippetName? ¶m=`value`]]
- Для повторяющихся блоков вывода (карточки товаров, список статей) используется связка сниппет + чанк-итератор
- Кеширование настраивается на уровне сниппета (кешируемый [[ ]] или некешируемый [[! !]] вызов)
Такой подход даёт полный контроль над 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»