Пример двух методов - один подключает функцию (сообщает о ней шаблонизатору), а другой её реализует:
/**
* Регистрируем новую функцию t() для смарти (поддержка мультиязычности)
*
*/
public static function registerSmartyMultyLangFuncion(&$smarty)
{
$smarty->register_function("t", "i18n::t"); // фуккция вывода мультиязычного текста
}
/** реализация пользовательской функции */
public static function t($params)
{
$result = 'SoMe-TeXt-HeRe';
if(!empty($params['t'])) { // если параметр передан в шаблонизаторе
$result = $params['t'];
}