Надо просто учитывать, что в отличие от return где-нибудь в блоке присвоения значений в php-коде, в смарти это буквально в блоке вывода echo/print, из-за чего мы обламываем таким образом процесс вывода, а не процесс присвоения.