но выводит результат строкой в месте вызова сниппета
Открою вам тайну: сниппет и возвращает строку, и ничего кроме строки. То есть или выполняете в нем return $result, и его он и возвращает, или не возвращает ничего более.
А как просто передать значение без вывода?
А вот этот вопрос вообще не понятен. Что надо вообще? Передать из чанка что-то в сниппет в качестве параметра? Все как обычно: [[!snippet?foo=[[+foo]] ]]. Это если в чанке.
И да, $_POST в чанке вы не передадите параметром сниппету. В Смарти-шаблоне можно. {$smarty.post.foo}