Возможно вызывать функции шаблона изнутри плагинов.Но изначально мы планировали эту опцию, поэтому в настоящее время API отличается, если кеширование включено или нет.Это может измениться и в будущих версиях.
Предположим, что вы хотите сделать что-то похожее на {call name = test world = 'hallo'} из плагина:
if ($template->caching) {
Smarty_Internal_Function_Call_Handler::call ('test',$template,array('world'=>'hallo'),$template->properties['nocache_hash'],false);
} else {
smarty_template_function_test($template,array('world'=>'hallo'));
}
Обратите внимание, чтоФункция шаблона вызывается в контексте шаблона, который вызвал плагин.Все переменные шаблона, известные в вызывающем шаблоне, автоматически известны внутри функции шаблона.
Функции шаблона не возвращают вывод HTML, а помещают его непосредственно в выходной буфер.