Объекты Smarty позволяет использовать в шаблонах объекты PHP. Существуют два способа их вызова. Первый - зарегистрировать объект для шаблона, затем вызвать его примерно так же, как и пользовательскую функцию. Второй - присвоить объект шаблону и использовать его, как любую другую присвоенную переменную. Первый метод гораздо аккуратнее и безопаснее, так как у зарегистрированного объекта можно ограничить свойства и методы. Но, в тоже время, зарегистрированный объект нельзя использовать в циклах, нельзя помещать в массив объектов и так далее. Выбор способа за вами, но используйте по возможности первый, чтобы максимально упростить синтаксис шаблона. В безопасном режиме недоступны приватные методы и функции (имена которых начинаются с "_"). Если существует и метод, и свойство с одинаковыми именами, то будет использован метод. Вы можете ограничить использование объекта только некоторыми методами и свойствами. Для этого перечислите их в массиве и укажите этот массив третьим параметром при регистрации объекта. По умолчанию, параметры из шаблона передаются объекту точно так же, как и пользовательской функции. Первым параметром передаётся ассоциативный массив, вторым - объект Smarty. Если вы хотите передавать параметры по одному, как при традиционном обращении с объектами, установите четвёртый параметр вызова в false. использование зарегистрированного или присвоенного объекта register_object("foobar",$myobj); // если мы хотим ограничиться определёнными методами или свойствами, перечисляем их при регистрации $smarty->register_object("foobar",$myobj,array('meth1','meth2','prop1')); // если мы хотим использовать традиционный способ передачи параметров объекту, регистрируем объект с соответствующим // флагом, установленным в false $smarty->register_object("foobar",$myobj,null,false); // Так же мы можем присвоить объект. Желательно присваивать объект по ссылке. $smarty->assign_by_ref("myobj", $myobj); $smarty->display("index.tpl"); ?> ]]> Вот так нужно обращаться к вашим объектам в index.tpl: meth1 p1="foo" p2=$bar} {* результат можно поместить в переменную *} {foobar->meth1 p1="foo" p2=$bar assign="output"} в результате получаем {$output} {* вызываем присвоенный объект *} {$myobj->meth1("foo",$bar)} ]]>