Миграция с MODX на Laravel
без потери данных и трафика
MODX давал свободу в вёрстке, но вся логика оказалась в сниппетах и шаблонах: чтобы понять, как работает страница, нужно прочитать десяток вставок PHP, разбросанных по шаблонам.
Переводим сайт на Laravel: контент становится моделями, логика — сервисами с тестами, а разработчику больше не нужно разбирать, какой сниппет что меняет на этой конкретной странице.
Посмотрим вашу систему, данные и интеграции. Скажем, сколько это займёт, что переносится, а что придётся делать заново.
Ответ 15 мин
Почему уходят
MODX: что перестаёт устраивать
Каждый пункт — не «мода на новый фреймворк», а конкретная проблема, которая стоит денег
или времени. Проверьте, сколько из них про вас.
01
Логика размазана по сниппетам
Вызовы собираются из сниппетов, чанков и вставок PHP: поведение страницы зависит от порядка и параметров вставок, и его невозможно увидеть целиком.
Что делаем: Логику переносим в сервисы и классы: один вход, понятные зависимости, тесты на сценарии. Поведение страницы перестаёт быть загадкой.
02
TV-параметры вместо схемы данных
Структура контента описана произвольными TV-полями: нет типов, нет валидации, а связи между сущностями держатся на соглашениях.
Что делаем: Проектируем нормальные модели и связи: типы, обязательные поля, валидация, понятные связи между разделами каталога.
03
Разработчиков почти нет
Найти специалиста по MODX сложно, а разобраться в чужой сборке сниппетов — отдельная работа, за которую мало кто берётся.
Что делаем: Laravel — массовая технология: команду можно расширять и менять без поиска редких специалистов. Документация передаётся вместе с проектом.
04
Обновления ломают вставки
После обновления MODX или PHP часть сниппетов перестаёт работать: они написаны под старые версии языка и библиотек.
Что делаем: Переводим на актуальный PHP и поддерживаемые зависимости. Обновления проверяются тестами на стенде, а не обнаруживаются на проде.
05
Кеш вместо оптимизации
Скорость держится на кешировании результатов сниппетов: при изменении данных кеш нужно сбрасывать, иначе посетители видят устаревшее.
Что делаем: Нормальные запросы с индексами, кеш данных в Redis и инвалидация по событиям. Данные обновляются там, где меняются.
06
Менеджер сайта пугает сотрудников
Админка MODX требует понимания дерева ресурсов и TV: контент-менеджеры боятся что-то сломать и обращаются к разработчику по мелочам.
Что делаем: Делаем админку под задачи: понятные разделы, предпросмотр, роли и права. Контент правится без участия разработчика.
Карта переноса
Что переносим: MODX → Laravel
Переносится не «сайт», а данные, логика и связи между ними. Ниже — что именно
описывается и переносится, чтобы новая система работала как старая, только быстрее.
Контент
Ресурсы и дерево страниц
Шаблоны и чанки как структура
TV-параметры как поля модели
Медиафайлы
Мультиязычные версии, если есть
Логика
Сниппеты и их поведение
Плагины и события
Формы и обработчики
Правила вывода каталогов
Пользовательские запросы
Данные и интеграции
Каталог, если используется
Пользователи и доступы
Формы заявок и история
Внешние API и обмены
SEO
Карта адресов и ЧПУ
Метаданные и заголовки
Sitemap и robots
Микроразметка
Редиректы
Честно
Что не переносится один в один
Мы не обещаем «то же самое, только на Laravel»: часть вещей переносится смыслом,
а не кодом. Об этом лучше знать до старта, чем обнаружить в процессе.
Сниппеты и плагины как код: их логика переписывается, а не копируется.
Менеджер MODX и дерево ресурсов: контент-менеджеры получают новую, более понятную админку.
TV-параметры как механизм: они становятся полями моделей с типами и валидацией.
Чанки и вставки PHP в шаблонах: заменяются Blade-шаблонами и компонентами.
Кеширование результатов сниппетов: заменяется кешем данных и инвалидацией по событиям.
Риски
MODX: риски и как мы их закрываем
У каждой системы свои ловушки. Мы называем их заранее и описываем, как закрываем —
до того, как они превратятся в сюрприз в середине проекта.
Логика в сниппетах без документации
Часть сниппетов писалась «на бегу». Восстанавливаем поведение по коду, шаблонам и вопросам сотрудникам.
Дерево ресурсов с дублями
Страницы-клоны и устаревшие разделы, на которые ведут ссылки. Разбираем карту до переноса, чтобы не тащить мусор.
TV с неочевидным смыслом
Названия полей не совпадают с назначением. Уточняем у контент-менеджеров, иначе поля перенесутся «как есть» и запутают всех.
Формы без сохранения истории
Заявки часто уходят только письмом. В новой системе они попадают в базу и CRM с журналом обработки.
План
Как проходит миграция
Шесть этапов, каждый заканчивается проверяемым результатом. Бизнес продолжает работать:
старый контур не выключается, пока новый не докажет, что считает и отдаёт данные правильно.
011–3 недели
Аудит и карта системы
Разбираем текущую систему: схема данных, точки входа, интеграции, задачи по расписанию, реальные бизнес-правила. На выходе — карта системы и оценка объёма.
022–3 недели
Архитектура и план переноса
Проектируем схему данных на Laravel, выбираем стратегию перехода, описываем этапы, критерии приёмки и план по SEO-редиректам.
032–6 недель
Стенд и перенос данных
Поднимаем новый контур, переносим данные, сверяем суммы, связи и справочники. Разрабатываем модули, начиная с тех, что дают деньги.
04по ситуации
Параллельная работа
Новый и старый контуры работают одновременно: разделы переключаются по одному после сверки. Пользователи не замечают переезда.
052–5 дней
Переключение трафика
Переводим домен, включаем 301-редиректы по карте URL, проверяем sitemap, счётчики и цели. Контролируем индексацию и ошибки.
062–4 недели
Стабилизация и передача
Следим за метриками, правим найденное, обучаем команду, передаём документацию, доступы и регламенты.
Особенности плана: MODX
Инвентаризация сниппетов обязательна: список вызовов по шаблонам показывает реальную функциональность сайта.
Контент переносим с ручной проверкой выборки: TV-поля часто заполнены непоследовательно.
Формы и заявки переносим в первую очередь — это прямые обращения, терять их нельзя.
Админку собираем вместе с контент-менеджерами: они лучше знают, каких полей не хватает.
SEO и трафик
Трафик из поиска не должен просесть
Главный страх при переезде — потерять позиции. Поэтому SEO-часть мы делаем до переключения
и контролируем после, а не «посмотрим, что будет».
Карта URL до переезда
Собираем все адреса старой системы из базы, sitemap и логов: карточки, категории, пагинация, фильтры, старые ЧПУ.
301-редиректы 1:1
Совпадающие адреса сохраняем, остальные закрываем постоянными редиректами — без «главной страницы вместо товара».
Метаданные и заголовки
Переносим title, description, H1 и тексты, а не генерируем заново: поиск уже знает эти страницы.
Микроразметка
Товары, хлебные крошки, отзывы, FAQ — разметка сохраняется и валидируется заново на новом контуре.
Sitemap и robots
Актуальная карта сайта, корректные правила обхода, отсутствие закрытых от индексации нужных страниц.
Счётчики и цели
Метрика, аналитика, цели и события переносятся и проверяются до переключения, чтобы не потерять статистику.
Мониторинг после релиза
Следим за ошибками 404/500, индексацией и позициями первые недели — редиректы и обход проверяются на живом трафике.
Стек
На что переводим: Laravel и вокруг
Открытые технологии без лицензий. Стек подобран так, чтобы систему могла развивать
любая PHP-команда, а не только её автор.
Интерфейсы без перезагрузок: админка, таблицы, формы, фильтры.
PostgreSQL или MySQL
Нормализованная схема, индексы под реальные запросы, реплики для отчётов.
Redis
Кеш, сессии и очереди вместо файлового кеша и cron-скриптов.
Horizon и очереди
Фоновые задачи с повторами, приоритетами и мониторингом.
Тесты и CI/CD
Покрытие критичных сценариев, отдельные окружения, релизы и откаты в одну команду.
Наблюдаемость
Логи, метрики и алерты: видно ошибки и деградацию до жалоб пользователей.
API и интеграции
Явные контракты обмена с 1С, платежами, доставкой, CRM и маркетплейсами.
Когда миграция не нужна
Мы не берём проект, если переход не окупается: иногда дешевле починить текущую систему
или обновить её. Честный ответ экономит вам бюджет.
Сайт небольшой и статичный: миграция дороже, чем его пересборка на Laravel «с нуля» по макету.
MODX используется только как генератор статических страниц без каталога и интеграций.
Нет задачи развивать функциональность — достаточно поддерживать текущее.
Форматы работ
Как можно начать
Можно взять только аудит и план — и внедрять своими силами. Можно мигрировать этапами.
Можно переписать систему целиком. Выбор зависит от состояния кода и от того, сколько бизнес
готов ждать.
Аудит и план миграции
Нужно понять объём работ, риски и стоимость до принятия решения.
Карта системы и данных
Схема данных на Laravel
План этапов и критерии приёмки
План SEO-редиректов
Оценка сроков и бюджета
фиксированная стоимостьАудит можно внедрять своими силами
Да. В Evolution логика почти целиком живёт в сниппетах, в Revolution добавляются элементы и настройки — подход к переносу различается, но результат один: нормальные модели данных и сервисы на Laravel. На аудите мы смотрим, какая ветка используется и насколько она закастомизирована.
Что будет с TV-параметрами?
Они становятся полями моделей: получают тип (текст, число, связь, файл), обязательность и валидацию. Это позволяет нормально искать, фильтровать и выводить данные, а контент-менеджеру — видеть понятную форму, а не список произвольных полей.
Сохранится ли текущая структура адресов?
Мы сохраняем адреса там, где новая структура совпадает, и закрываем 301-редиректами всё остальное. Карта URL собирается из дерева ресурсов и логов: в MODX часто есть страницы с несколькими адресами и устаревшие разделы, на которые всё ещё ведут ссылки.
Насколько сложнее поддерживать Laravel, чем MODX?
Для контент-менеджера — проще: админка делается под его задачи. Для разработчика — привычнее: стандартный фреймворк с документацией, тестами и большим сообществом. Сложность MODX в том, что уникальная сборка сниппетов понятна только её автору.
Можно ли перенести сайт частями?
Да. Обычно начинаем с разделов, которые дают трафик и заявки (услуги, каталог, формы), а блог и второстепенные страницы переносим следом. Старый сайт остаётся доступным до полного переключения, чтобы можно было сверять данные.
Как переносится база данных при миграции?
Схема переносится целиком, включая историю операций: заказы, платежи, заявки, справочники. Перед переносом проверяем целостность данных и чистим дубли. На новом контуре схема нормализуется: появляются типы, ограничения и внешние ключи, которые не дают создавать несогласованные записи. Сверку делаем выборочно вручную по ключевым таблицам, а не только отчётом из скрипта.
Как гарантируется, что трафик из поиска не просядет?
Карта URL собирается до переезда: из базы, sitemap и логов сервера. Совпадающие адреса сохраняются один в один, остальные закрываются 301-редиректами. Метаданные, заголовки и микроразметка переносятся, а не генерируются заново. После переключения мы следим за ошибками, индексацией и позициями — обычно это 2–4 недели наблюдения.
Что происходит с интеграциями: 1С, платежи, доставка, CRM?
Каждая описывается до разработки: что передаётся, как часто, что считается успехом и как видеть ошибки. В новой системе обмены становятся явными: журнал синхронизации, повторные попытки, алерты. Платёжные модули подключаем на тестовых аккаунтах до переключения трафика.
Можно ли обойтись без полного переноса?
Да. Варианты: укрепить текущую систему (закрыть уязвимости, добавить тесты, навести порядок в бэкапах), вынести отдельный модуль на Laravel и связать через API или шину, либо рефакторить по частям. На аудите мы говорим прямо, какой путь дешевле — иногда это отказ от полного переноса.
Сколько стоит миграция?
Стоимость зависит от объёма данных, числа интеграций, количества кастомной логики и требований к сохранению SEO. Аудит и план миграции фиксируются по цене заранее, дальше проект считается этапами с понятным результатом на каждом. По объёму работ миграция сопоставима с разработкой нового проекта — но с сохранением данных, истории и трафика.
Что будет с сотрудниками, которые работают в старой системе?
Мы меняем систему, а не процессы: админка собирается под их задачи, а обучение входит в проект. Обычно новая админка нравится больше: понятные формы, живые таблицы, отчёты без участия разработчика. Для сложных мест пишем короткие инструкции.
Кому принадлежат код и данные после миграции?
Вам. Код, схема данных, документация, доступы и инфраструктура оформляются на вас с самого начала. Мы не удерживаем проект в своём контуре: его можно передать другой команде, а документация описывает систему так, чтобы ей мог заняться любой PHP-разработчик.
Что нужно от нас для старта?
Доступ к исходному коду и базе данных (или их копиям), список интеграций и сервисов, контакт человека, который знает бизнес-логику и процессы, и данные о том, что критично не потерять при переезде. Дальше мы работаем сами и показываем промежуточные результаты.
Следующий шаг
Разберём вашу систему
Посмотрим код, базу и интеграции. Скажем, что переносится, что придётся делать заново,
сколько это займёт и как сохранить трафик. Без обязательств.
Мы используем необходимые cookie для работы сайта и форм. Аналитические cookie
(Яндекс.Метрика, включая запись сессий) подключаем только с вашего согласия —
от него можно отказаться. Подробнее:
Политика использования cookie
и
обработка персональных данных.
Настройки cookie
Выберите, какие категории cookie можно использовать. Необходимые отключить нельзя:
без них не работают формы и сессия.