Про 2.4+ пока не слышал, что ошибку исправили. Ты про эту? Я пока не отписался с подробностями, но коротко: выяснил в чем проблема. Они давно уже вынесли расширяющие пакеты из системных настроек в отдельную таблицу, но с этим у них косяков куча (я про них им писал еще в 13-ом году), в итоге у них чтение этих записей есть, а создания нет (да, и такое бывает :)). При этом именно при обновлении MODX фигачит эти настройки в отдельную таблицу, но MODX при инициализации по разному обрабатывает данные расширяющих пакетов из системных настроек и отдельной таблицы. В общем, в большинстве случаев помогает просто очистка таблицы modx_extension_packages (только не забывает про бекапы). Да и при обновлении мне несложно файлы обновить, всё равно ведь в ядро лезть надо :) Если ты все правильно делаешь, то в ядро не придется лезть. Единственно, что я сейчас исключил — это правку базы руками. Я просто в установочном пакете сразу данные про это поле прописываю в modx.mysql.schema.xml — и при установке всё уже есть. Ты и это можешь исключить. Когда пакет устанавливается, ты можешь инициировать свой модуль и выполнить добавление колонки средствами самого MODX-а. Вот смотри пример: <?php $pkgName = 'modImporter'; $pkgNameLower = strtolower($pkgName);
if ($object->xpdo) { $modx =& $object->xpdo; $modelPath = $modx->getOption("{$pkgNameLower}.core_path",null,$modx->getOption('core_path')."components/{$pkgNameLower}/").'model/';
switch ($options[xPDOTransport::PACKAGE_ACTION]) { case xPDOTransport::ACTION_INSTALL: case xPDOTransport::ACTION_UPGRADE: if ($modx instanceof modX) { $modx->addExtensionPackage($pkgNameLower, "[[++core_path]]components/{$pkgNameLower}/model/", array( // 'serviceName' => $pkgName, // 'serviceClass' => $pkgName, ));
$modx->addPackage($pkgNameLower, MODX_CORE_PATH . "components/{$pkgNameLower}/model/", array(
// 'serviceName' => $pkgName,
// 'serviceClass' => $pkgName,
));
$manager = $modx->getManager();
$manager->addField('modResource', 'externalKey');
$manager->addIndex('modResource', 'externalKey');
$modx->log(xPDO::LOG_LEVEL_INFO, 'Adding ext package');
}
break;
case xPDOTransport::ACTION_UNINSTALL:
if ($modx instanceof modX) {
$modx->removeExtensionPackage($pkgNameLower);
}
break;
} } return true; Это вот сюда фигачится: github.com/MODX-Club/MODX_SamplePackage/blob/master/_build/resolvers/resolver.register.php Только в транспортере надо подключить резолвер.