Интеграция Codeigniter и Smarty

Сегодняшний пост родился благодаря тому, что я начал разбираться с PHP-фреймворком Codeigniter. Умеет он многое, жизнь облегчает довольно таки хорошо, но вот его шаблонизатор мне как-то не нравится. Поэтому я решил связать Codeigniter и очень известный шаблонизатор Smarty (который кстати используется в CMS Livestreet и многих других).
Для начала — решил погуглить. Нашел два варианта, на вид разных, но когда присмотрелся понял, что практически они представляют из себя одно и то же. Попробовал сделать — не получилось, в логи сыпались ошибки. Тут я понял, что эти варианты были для старых версий, а для моих Codeigniter 2.0.2 и Smarty 3.0.8 это не подходило. Тогда я начал искать другой путь, ведь использовать Smarty в Codeigniter'е для меня удобней и привычней.
Решение проблемы я нашел спустя минут 10, оказалось оно не сложным, разница между предыдущими вариантами была мала, но из-за нее все и не работало.
Собственно решение задачки:
1. Скачиваем и устанавливаем Codeigniter. Скачиваем Smarty, файлы из папки libs копируем в application/libraries/smarty/, предварительно создав папочку smarty.
2. Создаем в папке application/libraries/ файл mysmarty.php и добавляем в него строки:
<?php
require_once «smarty/Smarty.class.php»;class Mysmarty extends Smarty {
function __construct() {
parent::__construct();
$this->template_dir = «templates/skin/»;
$this->compile_dir = «templates/compile/»;
}
}
?>
В данном коде подразумевается, что Ваши шаблоны будут храниться в папке templates/skin/ а компилированные файлы в templates/compile/, поэтому если это Вам не подходит — нужно заменить на свой вариант.
3. Добавим подгрузку библиотеки Smarty в «автозагрузку». Для этого в файле application/config/autoload.php ищем объявление массива $autoload['libraries'] и добавляем туда значение mysmarty:
$autoload['libraries'] = array('mysmarty');
4. Проверяем что получилось. Создаем в папке шаблонов файл, например index.tpl и добавляем в него:
{$test}
Создаем новый контроллер, для этого в папке application/controllers/ создаем файл, например main.php и помещаем в него код:
<?php
class Main extends CI_Controller
{
function index() {
$this->mysmarty->assign('test', 'Hello, world!');
$this->mysmarty->display('index.tpl');
}
}
?>
теперь открываем в браузере http://your-address.ltd/main/ и должны увидеть классику жанра — «Hello, world!».
Буду очень рад, если эта заметка кому-то поможет.
Profit!
Кстати, уже давно присмотрел себе новый телефон — HTC Wildfire. Но пока я думал и копил деньги появилась новая модель — Wildfire S. Теперь можно купить Htc Wildfire S с доставкой и не мучится. Осталось только отделить нужную сумму.






