Вы можете сделать это, но вывод макроса будет тихо опущен, если вы просто вызовете макрос. Обычно, если вам нужно вызвать макрос из функции и вернуть его результат в качестве результата функции, тогда что-то не работает. (Вызов функции из макросов обычно, а наоборот это не так.) Но это выполнимо:
[#function func a]
[#local r][@print_name "john doe"/][/#local]
[#return r]
[/#function]
Обратите внимание, что возвращаемое значение не будет строкой, если вы используете автоматическую спасаясь особенностью 2.3. 24 с выходным форматом вывода (например, HTML). Затем он будет иметь тип «разметка» вместо (для предотвращения двойного экранирования).