PHP
<?
$template_string = 'display {$foo} here';
$smarty->display('string:'.$template_string);
Учитывая что у шаблона при этом нет нет ни пути ни имени файла, то надо позаботиться об адекватном cache_id, который бы исключил возможность пересечения кэша.
В общем, у меня итоговый код выглядят так:
PHP
<?
LabCMS::instance()->setModuleTemplate('string:{$xml}');
$xml=getXml();
Tpl::instance()->assign('xml', $xml);