Я пробовал несколько способов, но они либо выдавали исключение SmartyException, либо вложенные шаблоны не имели доступа к переменным, которые я назначил в своем PHP-файле.
Просто используйте директиву {include}.
{include}
http://www.smarty.net/docsv2/en/language.function.include.tpl
В Smarty 3 есть лучший способ сделать это.Проверьте Шаблон наследования .Это гораздо удобнее, чем {include}.
Smarty 3 http://www.smarty.net/docs/en/api.create.template.tpl
Вы должны использовать
string createTemplate(string template, string cache_id, string compile_id, object parent);
, где parent param - ваш родительский шаблон
parent - необязательный параметр.Это восходящая ссылка на основной объект Smarty, созданный пользователем объект данных или другой созданный пользователем объект шаблона.Эти объекты могут быть связаны.Шаблон может получить доступ только к переменным, назначенным любому из объектов в родительской цепочке.