MODX Revolution 3, miniShop2 и mFilter2: поддержка и доработка сайта на MODX
MODX Revolution — система, которую любят разработчики за гибкость: вёрстка не навязывается, вывод полностью контролируется, лишнего кода нет. Владельцы сайтов на MODX чаще сталкиваются с другой стороной — найти специалиста сложнее, чем по WordPress, а сайт, сделанный несколько лет назад, нередко застрял на старой версии. Разберу, как устроен MODX, что нужно знать про miniShop2 и mFilter2 и как обновляться.
Как устроен сайт на MODX
Понимание базовых сущностей помогает и ставить задачи разработчику, и самому править контент.
- Ресурсы — страницы сайта в дереве слева. Каждый ресурс имеет заголовок, псевдоним (адрес), содержимое и шаблон.
- Шаблоны — HTML-каркас страницы с тегами MODX.
- Чанки — повторяющиеся куски HTML: шапка, подвал, карточка товара.
- Сниппеты — PHP-код, который выводит данные: меню, списки ресурсов, формы.
- TV (дополнительные поля) — поля ресурса сверх стандартных: картинка, цена, галерея.
- Компоненты (дополнения) — пакеты, установленные через «Установщик»: pdoTools, FormIt, miniShop2, mFilter2 и другие.
- Системные настройки — параметры сайта, ЧПУ, кэширование.
Если владельцу нужно поменять телефон в шапке, чаще всего он лежит в чанке или системной настройке, а не в каждой странице.
MODX 2 и MODX 3
MODX Revolution 3 вышел в 2022 году. Главные отличия для владельца:
- требует более свежий PHP и поддерживает актуальные версии PHP 8;
- переработанный код ядра с пространствами имён — часть старых дополнений не работает без обновления;
- обновлённый интерфейс админки.
Ветка 2.x поддерживается всё меньше, а хостинги постепенно отключают старые версии PHP. Если сайт на MODX 2.x, обновление — вопрос времени.
Как обновиться до MODX 3
- Обновите MODX 2 до последней версии ветки 2.8.x. Прыгать с очень старой версии сразу на 3 нельзя.
- Составьте список дополнений и проверьте, есть ли у каждого версия для MODX 3. В «Установщике» видно версии и наличие обновлений.
- Сделайте копию сайта на поддомене или локально.
- Обновите дополнения до последних версий, совместимых с MODX 2.8.
- Обновите ядро до MODX 3 на копии через пакет обновления.
- Обновите дополнения до версий под MODX 3.
- Проверьте сниппеты и плагины, написанные вручную: старые обращения к классам ядра нужно переписать с новыми именами.
- Пройдите все ключевые сценарии: страницы, формы, корзина, фильтр, поиск, админка.
- Повторите на рабочем сайте в спокойное время.
Самое трудоёмкое — самописные сниппеты и дополнения, которые не обновлялись авторами. Их приходится заменять или дорабатывать.
miniShop2: магазин на MODX
miniShop2 — бесплатный компонент интернет-магазина для MODX. Он добавляет:
- категории и товары как особые типы ресурсов;
- поля товара: цена, старая цена, артикул, вес, производитель, опции;
- корзину и оформление заказа;
- способы доставки и оплаты;
- заказы и статусы в админке.
Что важно знать
- Шаблоны вывода — чанки с префиксом tpl.msProducts, tpl.msCart, tpl.msOrder. Правьте копии, а не исходные чанки компонента, иначе обновление их перезапишет.
- Опции товара (размер, цвет) настраиваются в настройках miniShop2 и привязываются к категориям.
- Оплата через белорусские сервисы подключается отдельными компонентами или доработкой под API провайдера.
- Импорт товаров — из CSV встроенными средствами или через дополнительные компоненты, обмен с 1С — отдельными пакетами.
mFilter2: фильтры каталога
mFilter2 — популярный компонент фильтрации для miniShop2 и обычных ресурсов. Он умеет строить фильтры по полям товара, опциям, TV, производителям и цене, а также формировать SEO-страницы для комбинаций фильтров (например, «ламинат 33 класса Kronospan»).
Типичные проблемы с фильтром
- Медленная работа на большом каталоге. Нужен корректный кэш и индексы в базе. Проверьте, не выключен ли кэш в параметрах вызова.
- Пустые результаты после изменения опций — значения у товаров записаны в разном формате.
- Дубли страниц — фильтр формирует адреса с параметрами, которые индексируются. Закройте их от индексации или используйте SEO-страницы компонента.
- Ошибки после обновления miniShop2 — версии компонентов должны быть совместимы между собой.
Кэш в MODX
MODX кэширует ресурсы и результаты сниппетов. Если изменения не видны:
- «Сайт — Очистить кэш» в верхнем меню админки;
- проверьте, кэшируемый ли вызов сниппета: [[!snippet]] с восклицательным знаком — некэшируемый, без него — кэшируемый.
Частая ошибка — все вызовы сделать некэшируемыми «чтобы точно обновлялось». Сайт после этого заметно замедляется.
Безопасность MODX
- Переименуйте папки manager, connectors и core при установке или ограничьте доступ к админке по IP.
- Вынесите папку core за пределы корня сайта.
- Обновляйте ядро и дополнения: уязвимости в старых версиях известны и эксплуатируются.
- Проверяйте пользователей с доступом к админке.
- Делайте резервные копии файлов и базы вне сервера.
Поддерживать MODX или переезжать
Оставаться на MODX разумно, если:
- сайт работает, есть специалист для поддержки;
- функциональность нестандартная, и на MODX она реализована хорошо;
- дополнения имеют версии для MODX 3.
Задуматься о переезде на WordPress или OpenCart стоит, если:
- сайт на очень старой версии с самописными сниппетами;
- нет специалиста и сложно найти;
- функциональность типовая — сайт услуг или небольшой магазин.
Переезд — это перенос контента, новая тема и редиректы. Сравнение систем — в статье какую CMS выбрать бизнесу.
Как ставить задачу по сайту на MODX
Чтобы разработчик быстро разобрался в чужом сайте на MODX, подготовьте:
- доступ к админке с правами администратора и доступ к хостингу;
- версию MODX и список установленных дополнений — их видно в разделе «Пакеты»;
- адреса страниц, где нужно изменение, и скриншоты;
- информацию о том, кто делал сайт и есть ли документация.
Для оценки доработки разработчик посмотрит, где выводится нужный блок — в шаблоне, чанке или сниппете, — и насколько стандартно сделан сайт. Чем меньше самописных сниппетов без документации, тем быстрее и дешевле работа.
Резервные копии MODX
Для копий используют компонент backup-пакетов или средства хостинга. Важно копировать и файлы, и базу, включая папку core, которая может быть вынесена за пределы корня сайта, — её часто забывают. Перед обновлением ядра или дополнений копия обязательна.
Производительность MODX
Сайт на MODX может быть очень быстрым, если:
- вызовы сниппетов кэшируются там, где данные не меняются для каждого посетителя;
- используется pdoTools вместо устаревших сниппетов вывода — он заметно быстрее;
- изображения уменьшаются при выводе через phpThumbOn или аналогичные компоненты, а не грузятся в исходном размере;
- в шаблонах нет десятков вложенных вызовов чанков на каждый элемент списка.
При медленной работе включите режим отладки запросов и посмотрите, какие вызовы занимают больше всего времени.
Итог простой: MODX хорош, пока он обновлён и сделан аккуратно.
Чек-лист поддержки сайта на MODX
- Версия MODX и PHP актуальны или есть план обновления.
- Список дополнений с версиями и совместимостью с MODX 3.
- Правки шаблонов miniShop2 — в копиях чанков.
- Кэш включён, некэшируемые вызовы только там, где нужно.
- Админка защищена, core вне корня.
- Резервные копии вне сервера.
- Фильтр не плодит дубли в индексе.
Частые вопросы
Можно ли обновить MODX 2.x сразу до 3?
Сначала нужно обновиться до последней версии ветки 2.8, затем до MODX 3. Перед этим проверьте, есть ли у всех дополнений версии под MODX 3.
Бесплатен ли mFilter2?
mFilter2 — платный компонент из магазина дополнений для MODX. miniShop2 распространяется бесплатно.
Почему сайт на MODX медленный?
Часто из-за некэшируемых вызовов сниппетов, отсутствия кэша фильтра и тяжёлых запросов в самописных сниппетах. Это исправляется без смены CMS.
Сложно ли найти специалиста по MODX?
Сложнее, чем по WordPress или OpenCart. Поэтому важно, чтобы код сайта был понятным и без правок ядра.
Нужна помощь?
Если не хочется разбираться самому или не получилось — напишите мне. Посмотрю задачу и скажу, что нужно сделать, сколько это займёт и сколько будет стоить.
