Я использую CodeIgniter со Smarty, и это здорово (если вам нравится Smarty, я делаю).
Скажем, у вас есть контроллер статьи, вы можете сделать что-то вроде этого:
class Article extends Controller {
function show_all() {
$articles = $this->article_model->get_all();
$this->smarty->assign('entities', $articles);
$this->smarty->view('list');
}
}
А потом в вашем шаблоне:
{include file="header.tpl"}
<ul>
{foreach from=$entities item=entity}
<li>{$entity.title}</li>
{/foreach}
</ul>
{include file="footer.tpl"}
Приятно то, что контроллеру не нужно знать о верхних и нижних колонтитулах. Он просто знает, что группа статей должна отображаться в виде списка. Оттуда, это просто шаблоны, которые отвечают за определение того, как список вещей отображается, в данном случае, в улье между верхним и нижним колонтитулами.
Еще одна крутая вещь, которую вы можете сделать, это использовать этот шаблон списка для вещей, которые не являются статьями. Вы можете иметь список пользователей или страниц или что-то еще. В некоторых случаях повторное использование такого шаблона может быть полезным. Не всегда, но иногда.
Настройка CodeIgniter для smarty довольно проста. Это вопрос копирования файлов Smarty в папку вашей библиотеки и создания простой оболочки для нее. Вы можете найти инструкции здесь:
http://devcha.blogspot.com/2007/12/smarty-as-template-engine-in-code.html
Как только вы настроены, это здорово.