Все-таки я был не прав. Видимо переменные, объявленные в шаблонах, видны только внутри текущего шаблона и дочерних. А выше не видны. В инете нашел несколько тем по этому поводу, но решения ни у кого не отмечено. Первое альтернативное решение, которое мне пришло в голову — это использовать modResource::setOption()/::getOption(). Дело в том, что эти методы имеют все производные от xPDOObject. Метод ::getOption() хорош еще и тем, что можно задать массив первостепенного источника и значение по умолчанию. К примеру, задаем переменную в дочернем шаблоне (только эта переменная — свойство текущего ресурса). {$modx->resource->setOption('foo', 'value')} В родительском шаблоне после вызова дочернего шаблона эта переменная будет видна в ресурсе. {$modx->resource->getOption('foo', $defaultSourceArray, $defaultValue)} Но надо сразу учитывать, чтобы дочерний шаблон не был кешируемым, так как это переменная не Smarty, а самого документа. То есть если дочерний шаблон не был отработан, то и в ресурсе этой переменной не будет.