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

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, но это гораздо более заморочено.