Добрый день!
Интересный эксперимент :)
Но все же есть пара моментов. И вот основной:
$modx->smarty->display(«tpl/{$tpl}»); return ""; // отпрвить $ничего на вывод через modx-парсер. :)
Таким образом рушится механизм кеширования MODX, так как он не получает отрабатываемого контента. Ежели вы хотите именно отключить MODX-парсер, то есть более лаконичное решение — системная настройка parser_class. Она учитывается в методе MODx::getParser()
public function getParser() { return $this->getService('parser', $this->getOption('parser_class', null, 'modParser'), $this->getOption('parser_class_path', null, '')); }
То есть пишете парсер на замену modParser и все. А в нем, где надо, облегчаете методы по максимум, чтобы просто возвращали по минимуму и все.
Только вешайте его именно на внешний контекст, то есть в настройки контекста прописывайте, а не в системные, чтобы в mgr работал родной парсер, а во фронте ваш. Потому что системный парсер используется в том числе и для обработки системных настроек и т.п.