сниппеты вроде как не могут возвращать ничего кроме строк
Вот поэтому мы сниппеты и не используем (на самом деле не только по этому, но на самом деле иногда все-таки используем, к примеру, для вызова некешируемого Смарти-блока тип [[!smarty?tpl=`....tpl`]]).