Как это происходит у нас? Два варианта.
Вариант 1.
1. В ТВ версии фиксируем все изменения в гите git add .; git commit -am «comment»;
2. На РВ накатываем изменения git pull;
3. Очищаем кеш.
Вариант 2.
Плагин newDesign (должен вызываться раньше, чем плагин modxSmarty).
Делается копия скина Смарти-шаблона сайта с новым названием. Когда плагин активирован, включается другой скин сайта и кеш-префикс, и разработчик работает на боевом сайте, но никакие изменения в шаблонизации сайта не могут быть увидены простыми посетителями. Какой-нибудь новый процессор в системе они тоже никак не увидят. Таким образом на сайте ведется реальная работа с реальными данными, но сайт для неадминов работает в обычном режиме.
Когда работа выполнена, проверена и готова к запуску, просто в системной настройке меняется название используемого шаблона на новый и все.