В общем, я решил тоже поучаствовать в этом экспери

В общем, я решил тоже поучаствовать в этом эксперименте, и написать свой парсер на замену. Облегчить его на 100% не получается в любом случае. Во-первых, MODX довольно активно использует его отдельные методы, так что как минимум пустые методы надо прописать. Во-вторых, в тех же шаблонах у нас в параметрах есть необходимые параметры, типа tpl или phptemplates.non-cached, и чтобы они учитывались в системе, пришлось один метод более живым оставить. Вот такой класс у меня получился:

class modWebParser {
    /**
     * A reference to the modX instance
     * @var modX $modx
     */
     
    public $modx= null; 
    
    /**
     * @param xPDO $modx A reference to the modX|xPDO instance
     */
    function __construct(xPDO &$modx) {
        $this->modx =& $modx;
    }
 
    public function setProcessingElement($arg = null) {
    } 
    
    public function processElementTags($parentTag, & $content, 
        $processUncacheable= false, $removeUnprocessed= false, $prefix= "[[", 
        $suffix= "]]", $tokens= array (), $depth= 0) {
        return $processed;
    } 
    
    public function collectElementTags($origContent, array &$matches, $prefix= '[[', $suffix= ']]') {
        return 0;
    }

    /**
     * Parses an element/tag property string or array definition.
     *
     * @param string $propSource A valid property string or array source to
     * parse.
     * @return array An associative array of property values parsed from
     * the property string or array definition.
     */
    public function parseProperties($propSource) {
        
        $properties= array ();
        
        if (!empty ($propSource)) {
            if (is_string($propSource)) {
                $properties = $this->parsePropertyString($propSource, true);
            } elseif (is_array($propSource)) {
                foreach ($propSource as $propName => $property) {
                    if (is_array($property) && array_key_exists('value', $property)) {
                        $properties[$propName]= $property['value'];
                    } else {
                        $properties[$propName]= $property;
                    }
                }
            }
        }
        return $properties;
    }
    
    public function isProcessingUncacheable() {
        $result = false;
        return $result;
    }
    
    public function isRemovingUnprocessed() {
        $result = false;
        return $result;
    }

    public function parsePropertyString($string, $valuesOnly = false) {
        $properties = array();
        return $properties;
    }
}

Закинул его в core/components/modxsite/model/modxsite/model/modwebparser.class.php

В настройках контекста web прописал: parser_class = modWebParser parser_class_path = {core_path}components/modxsite/model/modxsite/

В целом все работает, и API MODX-а получается использовать, к примеру {$modx->getOption('site_url')}

Попробуйте установить ShopModxBox и погонять с этим парсером и без него. Но здесь надо учитывать, что многое не будет работать в принципе. Лично мне кажется, что овчинка не будет стоить выделки. К примеру, мы не сможем использовать некешируемые блоки через [[!smarty?tpl=....]] и т.п. Конечно же мы можем просто отрабатывать шаблоны каждый раз, включив кеширование самого Smarty, но это гораздо более заморочено.