I would put Smarty in a different basket to the heavyweight frameworks like CakePHP, Symfony, etc in that it's quite easy to understand. At least I thought so. The manual is pretty good. Take a look at the Crash Course:
include('Smarty.class.php');
// create object
$smarty = new Smarty;
// assign some content. This would typically come from
// a database or other source, but we'll use static
// values for the purpose of this example.
$smarty->assign('name', 'george smith');
$smarty->assign('address', '45th & Harris');
// display it
$smarty->display('index.tpl');
with:
<html>
<head>
<title>User Info</title>
</head>
<body>
User Information:<p>
Name: {$name}<br>
Address: {$address}<br>
</body>
</html>
which is a lot clearer than having:
<?php echo $model->name; ?>
or even:
<?= $model->name ?>
littered all over your code.
And that's it pretty much. I mean there's more to Smarty, obviously. Modifiers, making code cleaner to do odd/even table styling and so forth. But all it is is a nicer syntax for writing PHP views.
You can put in a Smarty template something like:
{$post|strip|stripTags|wordwrap:30}
and this will output a variable, replace all white-space with a single space, remove any tags and wrap on word boundaries with a line length of 30.
That's a lot to do in a single line.
Now only that but you can create custom functions/modifiers/plugins of your own easily enough. I have some that do versioning of static content automatically. See PHP Smarty Tutorial: Caching and Versioning Static Content. You can turn:
{image src="logo.gif"}
into:
<img src="logo.gif?89723422" width="223" height="87">
where the actual height and width are calculated and cached.