Расширение любых таблиц MODX

В очередной раз понадобилось изменить таблицу сайта, менять которую не предусмотрено.

Что обычно люди делают в таких случаях? Верно, редактируют ядро или нужный компонент, и больше их не обновляют. Но ведь это неправильно, и можно решить вопрос иначе.

Пишем обычный плагин, выставляем для него событие OnMODXInit и меняем модель для нужных классов системы или дополнений. Например, я добавил id менеджера в заказ miniShop2:
<?php
switch($modx->event->name){case'OnMODXInit':
		$modx->loadClass('msOrder');
		$modx->map['msOrder']['fields']['manager_id']=0;
		$modx->map['msOrder']['fieldMeta']['manager_id']= array('dbtype'=>'int','precision'=>10,'attributes'=>'unsigned','phptype'=>'integer','null'=>true,'default'=>0,);break;}
Остаётся только физически добавить свои колонки в таблицы базу данных, и MODX работает с ними, как с родными. Сохраняет, выбирает, фильтрует — всё как положено.

Больше никаких проблем с обновлениями.

В комментариях возникли вопросы, а что со скоростью?
Отвечаю, этот код отрабатывает примерно за 0.00048 сек. Прикиньте, сколько нужно инициализировать новых классов и добавить полей, чтобы заметить тормоза.