Я считаю, что вы можете сделать это с помощью register_modifier () . По сути, вы пишете функцию php для вставки тега, а затем регистрируете его как модификатор. После того, как вы это сделаете, используйте его в smarty, как и другие модификаторы, например:
{$variable|break_title}
В общем, лучше не делать сложное форматирование в шаблонах smarty. Чем ближе ваши шаблоны к ванильному html, тем лучше.
Возможная реализация:
function break_title($title) {
return wordwrap($title, 59, '<br />\n');
}
/* later */
$smarty->register_modifier('break_title', 'break_title');
Если вы хотите принять во внимание размер шрифта, вы можете установить глобальную переменную конфигурации, указывающую количество символов, которые нужно разбить.
EDIT:
Как упоминает комментатор, если существует существующая функция php, которая делает то, что вы хотите, вы можете получить к ней доступ без регистрации функции:
{$variable|wordwrap:59:"<br />\n"}