Короткий ответ
Resolvers, validators, vehicles, версии, зависимости, миграции и upgrade path. Разбираем практический порядок работ, риски, стоимость и то, как принять результат без новых проблем.
Ниже — конкретные проверки, команды, таблицы и контроль результата. Выполняйте изменения только после резервной копии, если действие затрагивает рабочую систему.
Что должно обновляться пакетом
| Часть | Рекомендация |
|---|---|
| Файлы | vehicle/resolver или package source |
| Namespace/menu | object vehicles |
| Системные настройки | |
| значений | |
| DB schema | миграции по версии |
| Lexicon/assets | поставлять пакетом |
| Удаление | не удалять пользовательские данные без явного решения |
Каркас сборки transport package
$builder = $modx->newObject('modPackageBuilder');
$builder->createPackage('myextra', '1.0.0', 'pl');
$builder->registerNamespace('myextra', false, true, '{core_path}components/myextra/');
$vehicle = $builder->createVehicle($object, [
xPDOTransport::UNIQUE_KEY => 'name',
xPDOTransport::UPDATE_OBJECT => true,
xPDOTransport::PRESERVE_KEYS => false,
]);
$builder->putVehicle($vehicle);
$builder->pack();Rollback надо проектировать до релиза
Если версия меняет таблицы или формат данных, одного удаления пакета недостаточно. До обновления нужен backup БД/файлов и понятная миграция назад либо совместимость кода с обеими версиями схемы.
Релизный чек-лист
| Проверка | До публикации |
|---|---|
| Чистая установка | да |
| Обновление предыдущей версии | да |
| Повторная установка | не создаёт дубли |
| Удаление | предсказуемое |
| Версии package/metadata | совпадают |
| Resolver paths | существуют |
| Manager/routes | открываются после update |
Как проверить результат
После изменений повторите исходный сценарий, зафиксируйте результат и убедитесь, что соседние функции работают так же, как до правки. Если проблема проявляется не всегда, проведите несколько повторов в одинаковых условиях и сохраните диагностические данные.
Проверка обновления Transport Package
После установки сравните не только номер пакета в MODX, но и фактически развёрнутые файлы, плагины и сниппеты. Отдельно проверьте источники файлов в транспортном архиве: путь в vehicle или resolver должен совпадать с расположением содержимого в пакете. При несовпадении MODX способен зарегистрировать новую версию, а рабочий код останется старым.
Безопасный цикл проверки: резервная копия, установка на staging, анализ логов установки, проверка файлов и элементов MODX, функциональный smoke-test, затем обновление рабочего окружения. Откат должен учитывать не только PHP-файлы, но и изменения схемы данных.