pict

 

Прикручиваем smarty к CodeIgniter

Рубрика: Мир глазами программиста
Раздел: codeigniter

дата:05-06-2009

Практически год, как я юзаю CodeIgniter, и все это время, просто не имею возможности на него нарадоваться. Успешный, вполне успешный фрэймворк. Но вот шаблонизатор у него естественно подкачал! Обычный шаблонизатор CI не годиться ни на что, понятия не имею, нафига он вообщем встроен… Smarty, в личную очередь, вполне мощнейший и функциональный шаблонизатор, каковой, не лишним будет заметить заявить, я начал применять еще до знакомства с CI. Наконец, поняв, что моя жизнь без CI, как и без smarty, будет унылой, неинтересной и скучноватой, я, само собой, принял решение соединить эти 2 чуда природы. Рассказываю как я это создал.

Делаем модель для отображения шаблонов.

Наконец, в первую очередь скопируем smarty в CI. Здесь естественно кому как больше нравиться, я традиционно копирую директорию Smarty в директорию /system. В результате путь до Smarty.class.php получаеться таковой: /system/Smarty/libs/ Smarty.class.php.
Сейчас сделаем модель, каковая станет отвечать за связь CI и Smarty. Я именовал данную модель “design”. Чтобы достичь желаемого результата в папке /system/application/models делаем файл Design.php со последующим кодом

< ?php
class Design extends Model
{
var $smarty;
function Design()
{
parent::Model();
define('SMARTY_DIR', $_SERVER['DOCUMENT_ROOT'].'/system/Smarty/libs/');
require_once(SMARTY_DIR . 'Smarty.class.php');
$this->smarty = new Smarty();
$this->smarty->template_dir = $_SERVER['DOCUMENT_ROOT'].’/themes/’;
$this->smarty->compile_dir = $_SERVER['DOCUMENT_ROOT'].’/themes/templates_c/’;
$this->smarty->config_dir = $_SERVER['DOCUMENT_ROOT'].’/themes/configs/’;
$this->smarty->cache_dir = $_SERVER['DOCUMENT_ROOT'].’/themes/cache/’;
$this->smarty->left_delimiter = “{%”;
$this->smarty->right_delimiter = “%}”;
//$this->smarty->debugging = true;
}
function show($template)
{
$this->smarty->display($template.’.tpl’);
}
}

Поясню по подробнее.

Мы делаем свойство класса под названием $smarty

var $smarty;

Дальше способ Design() – это конструктор модели, каковой описывает константу ‘SMARTY_DIR’, в ней находиться путь до smarty, подключает файл класса smarty, и присваивает сделанному нами свойству ’smarty’ объект класса smarty.

define(’SMARTY_DIR’, $_SERVER['DOCUMENT_ROOT'].’/system/Smarty/libs/’);
require_once(SMARTY_DIR . ‘Smarty.class.php’);
$this->smarty = new Smarty();

Последующие строки

$this->smarty->template_dir = $_SERVER['DOCUMENT_ROOT'].’/themes/’;
$this->smarty->compile_dir = $_SERVER['DOCUMENT_ROOT'].’/themes/templates_c/’;
$this->smarty->config_dir = $_SERVER['DOCUMENT_ROOT'].’/themes/configs/’;
$this->smarty->cache_dir = $_SERVER['DOCUMENT_ROOT'].’/themes/cache/’;

Устанавливают пути до:

  • директории с шаблонами,
  • директории для компиляции шаблонов,
  • директории для конфигурационных файлов шаблонов,
  • директории кэша.

Строчками

$this->smarty->left_delimiter = “{%”;
$this->smarty->right_delimiter = “%}”;

Мы заявляем smarty, что не желаем применять разделители установленные по умолчанию (“{“, ”}”), и меняем их на свои (“{%”,“%}”), так как ежели неожиданно в шаблон закрадется строка css, к примеру:


Body {
padding:0px
}

Либо js


function some()
{
// Код ф-ции
}

То код содержащийся меж фигурных скобок, smarty воспримет за собственный, и выдаст погрешность… Нафиг нам таковое блаженство?
Ну и крайняя строка конструктора

//$this->smarty->debugging = true;

Это вывод консоли отладки, вещь достаточно нужная, показывающая все переменные, переданные шаблонизатору (для вывода консоли строку надлежит раскомментировать).
Ну а дальше идет способ show($template), отвечающий конкретно за вывод шаблона. Способ воспринимает заглавие шаблона (без расширения), присобачивает к нему расширение и выводит на дисплей.

Внедрение.

До этого чем применять, нельзя не добавить лишь что сделанную модель в автозагрузку. Чтобы достичь желаемого результата добавьте модель “design” в массив $autoload['model'], каковой определен в файле /system/application/config/autoload.php
Сейчас передавать в шаблонизатор переменные возможно так:

$this->design->smarty->assign(”name”,$value);

А выводить шаблоны:

$this->design->show(”template”);

Спонсоры заметки

Анонсы жилищного рынка, заметки, и перепродажа квартир в Столице на веб-сайте domania.ru

Подумали о покупке авто? Приобрести новенькую нет финансов? Обратите внимание на бувшие в употреблении авто. Хватит быть пешеходом!

У вас отменная работа? Вы получаете довольно? Вы увлекаетесь тем, что вам нравиться? Вас организуют условия? Ежели вы дали ответ нет но бы на 1 вопросец, то вам необходима свежая работа. Запомните, работа обязана приносить не столько материальное, но и моральное ублажение.

Прибавить в закладки:
okbm("http://boliev.com/archives/581","Прикручиваем smarty к CodeIgniter")

<<< Предыдущая статья Следующая статья >>>

 

Материалы раздела codeigniter

    Дружественные сайты:
    Камины дровяные как символ благосостояния