Jump to main content Jump to doc navigation

Владельцы сайтов идут по Обновлению с 2.x до 3.0. Эта страница для авторов, которые собирают и сопровождают transport-пакеты.

Список совместимых пакетов: SiteDash. Подробности по каждому пункту на связанных страницах ниже. Заметки theboxer по Collection (сводка на modx.pro) показывают Extra, который расширяет modResource.

Объём поддержки

Цель Подход
Только MODX 3 Классы с namespace, модели PSR-4, bootstrap.php. Убрать require_once старых путей ядра.
Один пакет на 2.x и 3.x Ветвление по версии ($modx->version['version'] >= 3), префиксы имён классов или динамические родительские классы. Больше работы. Обзор: Modernizing Extras cheat sheet.

Глобальные алиасы (modResource, modObjectCreateProcessor и похожие) в 3.0-3.2 по умолчанию ещё подключаются через load_deprecated_global_class_aliases. Автоподключение планируют убрать в 3.3, поэтому к этому моменту код лучше перевести на namespace. См. Изменённые имена классов.

Чеклист

  1. PHP: ориентируйтесь на минимум той линейки MODX, которую поддерживаете (требования).
  2. Имена классов: в extends, type hint и instanceof вместо коротких имён ядра используйте MODX\Revolution\… / xPDO\…. Таблицы: Изменённые имена классов.
  3. Процессоры: наследуйтесь от новых namespace процессоров. Flat-file процессоры уберите. Удалите require_once на core/model/modx/modprocessor.class.php и …/processors/resource/*.class.php (эти пути исчезли). Подробнее: Процессоры.
  4. Модели xPDO: в схеме package это PHP-namespace, version="3.0", пересоберите metadata.mysql.php, вызовите addPackage с префиксом namespace, зарегистрируйте PSR-4. Гайд: xPDO 3.
  5. bootstrap.php: необязательный файл в корне Extra (путь namespace). Autoload, addPackage, сервисы DI. См. Пространства имён и DI-контейнер.
  6. Меню / CMP: без modAction. В меню action это имя контроллера в namespace (/manager/?namespace=myextra&a=home). См. modAction и связанные.
  7. JS менеджера: MODx.config.manager_language → MODx.config.cultureKey (Язык менеджера).
  8. HTTP-клиент: modRestClient удалён. Используйте HTTP-сервис.
  9. Сборка / установка: проверьте install и upgrade на MODX 3. Для 3.x удобнее актуальная заготовка (ModExtra3). В 3.0 Markdown в атрибутах пакета разбирается (скрипт сборки).

Пример: Extra расширяет modResource (Collections)

Если кастомный ресурс должен попадать в $modx->getDescendants(\MODX\Revolution\modResource::class), в схеме у extends нужно полное имя класса ядра.

Схема

Было:

<object class="CollectionContainer" extends="modResource">
    <!-- колонки без изменений -->
</object>

После:

<object class="CollectionContainer" extends="MODX\Revolution\modResource">
    <!-- колонки без изменений -->
</object>

Пересоберите модель, чтобы обновился metadata.mysql.php.

PHP-класс и процессоры

Уберите устаревшие подключения, например:

require_once MODX_CORE_PATH . 'model/modx/modprocessor.class.php';
require_once MODX_CORE_PATH . 'model/modx/processors/resource/create.class.php';
require_once MODX_CORE_PATH . 'model/modx/processors/resource/update.class.php';

Наследуйтесь от типов с namespace:

2.x 3.x
modResource MODX\Revolution\modResource
modResourceCreateProcessor MODX\Revolution\Processors\Resource\Create
modResourceUpdateProcessor MODX\Revolution\Processors\Resource\Update

То же для любых {ClassKey}CreateProcessor / {ClassKey}UpdateProcessor. См. Процессоры и пользовательские классы ресурсов.

Связанные страницы

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • deJaya
  • JT Skaggs
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$204 per month—let's make that $500!

Learn more