Php'nin en çok kullanılan template motorlarından biri olan Smarty'yi Codeigniter framework ile birlikte kullanabiliriz. Smarty hakkında daha fazla bilgiyi kendi sitesinden veya googleden aratarak bulabilirsiniz. İsterseniz hiç vakit kaybetmeden hemen başlıyalım entegre etmeye .
İlk olarak Smarty'yi indirelim. (Smarty indirmek için buraya tıklayın) . Download bölümünden son sürümünü indirelim.
Şimdi Codeigniter'ın kurulu olduğu yer içindeki "application/third_party" klasörü içerisine bir tane "smarty" adında klasör açıyoruz.Ardından "smarty" klasörünün içerisine "cache" ve "configs" adında iki tane klasör oluşturuyoruz. İndirdiğimiz "smarty-3.1.30.zip" dosyasının içerisindeki "libs" klasörünü "third_party" içerisine oluşturduğumuz "smarty" klasörüne atıyoruz. Artık entegre etmeye hazırız .
Codeigniter'ın kurulu olduğu yer içindeki "application/libraries" içerisine "Template.php" adında bir dosya oluşturuyoruz. Siz isterseniz farklı isimlerde kulanabilirsiniz biz örneğimizde "Template" olarak kullanacağız. Dosyaımızı oluşturduktan sonra açalım ve kodlarımızı yazmaya başlayalım.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require_once( APPPATH.'/third_party/smarty/libs/Smarty.class.php' ); // İndirdiğimiz smarty paketini sayfaya dahil ediyoruz
class Template extends Smarty { // Smarty sınıfını oluşturduğumuz "Template" adlı sınıfa özelliklerini miras alıyoruz
protected $template; // Tema adı
public $theme_dir = APPPATH .'views/'; // Tema dosyalarının saklanacağı yer eğer değiştrilmezse varsayılan olarak bu yol kullanılır
public $compile_dir = APPPATH .'views/compiled'; // Derleme dosyalarının saklanacağı yer eğer değiştrilmezse varsayılan olarak bu yol kullanılır
public $config_dir = APPPATH .'libraries/smarty/configs'; // Ayar dosyalarının saklanacağı yer eğer değiştrilmezse varsayılan olarak bu yol kullanılır
public $cache_dir = APPPATH .'libraries/smarty/cache';// Cache(önbellek) dosyalarının saklanacağı yer eğer değiştrilmezse varsayılan olarak bu yol kullanılır
public function __construct()
{
parent::__construct();
// Assign metodu ile view dosyasına aktaracağımız değişkenleri oluşturuyoru. Sürekli kullandığımız için 3 tane değişkenimizi varsayılan olarak yolluyoruz.
$this->assign( 'FCPATH', FCPATH );
$this->assign( 'APPPATH', APPPATH );
$this->assign( 'BASEPATH', BASEPATH );
}
/**
* Ayarları yap
* @param array $settings
*/
public function config($settings = array())
{
// Eğer Tema sistemi gibi birşey yapmak istersek config metodumuzun dizi parametresine template adında bir değer yoluyoruz.
$this->template = isset($settings["template"]) ? $settings["template"] : $this->template;
// Ayarlarımızı bu metod ile yapıyoruz eğer belirtilen değerler dizi olarak gönderilmezse varsayılan değerler kullanılır.
$this->theme_dir = isset($settings["theme_dir"]) ? $settings["theme_dir"] : $this->theme_dir;
$this->compile_dir = isset($settings["compile_dir"]) ? $settings["compile_dir"] : $this->compile_dir;
$this->config_dir = isset($settings["config_dir"]) ? $settings["config_dir"] : $this->config_dir;
$this->cache_dir = isset($settings["cache_dir"]) ? $settings["cache_dir"] : $this->cache_dir;
// Belirlediğimiz değerleri smarty sınıfına tanıtıyoruz
$this->setTemplateDir($this->theme_dir.$this->template);
$this->setCompileDir($this->compile_dir);
$this->setConfigDir($this->config_dir);
$this->setCacheDir($this->cache_dir);
}
/**
* Codeigniter view sistemi
* @param string $template
* @param array $data
* @param boolean $return
*/
public function view($template, $data = array(), $return = FALSE)
{
foreach ($data as $key => $val)
{
$this->assign($key, $val); // Data değişkeninde depolanan dizinin değerlerini hepsini view'e aktarıyoruz.
}
if ($return == TRUE) // Eğer return değişkeni true ise çıktıyı tamponluyoruz
{
ob_start();
$this->display($template.".tpl"); // Tpl dosyasını çağır
$content = ob_get_contents();
@ob_end_clean();
return $content;
}
else
{
// Eğer return değişkeni false ise direk olarak tpl dosyasını çağırıyoruz
return $this->display($template.".tpl");
}
}
}
/* End of file Template.php */
/* Location: ./application/libraries/Template.php */
Bu şekilde bir sınıf yazdık siz isterseniz kendinize göre istediğiniz şekilde geliştirebilirsiniz.
Artık kullanımına geçebiliriz. Ben "Site" adında bir Controller oluşturdum siz istediğiniz isimde oluşturabilirsiniz.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Site extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->library('template'); // Yazdığımız kütüphaneyi sayfaya yüklüyoruz.
$this->template->config(array(
// "template"=>"blog", // Varsayılan dışında eğer tema seçme sistemini kullanmak istersek bu ayarı kullanabiliriz
//"theme_dir"=>FCPATH."themes/", // Varsayılan dışında eğer tema klasörünü değiştirmek istersek bu ayarı kullanabiliriz
//"compile_dir"=>APPPATH .'views/compiled', // Varsayılan dışında eğer tema klasörünü değiştirmek istersek bu ayarı kullanabiliriz
//"config_dir"=> APPPATH .'libraries/smarty/configs', // Varsayılan dışında eğer config(ayar) klasörü belirlemek istersek bu ayarı kullanabiliriz
// "cache_dir"=> APPPATH .'libraries/smarty/cache' // Varsayılan dışında eğer cache(önbellek) klasörü belirlemek istersek bu ayarı kullanabiliriz
));
}
public function index()
{
$data["baslik"] = "Web Derslerim";
$this->template->view("index",$data); // View metodunun kullanımı Codeigniter'in tema sistemindeki view metodu ile aynıdır. 3 Parametre alır aynı şekilde.
}
}
/* End of file Site.php */
/* Location: ./application/controllers/Site.php */
Şimdi "application/views" klasörü içerisine bir tane "index.tpl" adında dosya oluşturalım.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{$baslik}</title>
</head>
<body>
{$baslik}
</body>
</html>
Kullanımı bu şekilde smarty hakkında daha fazla bilgi almak için kendi sitesine bakabilirsiniz.
Kolay gelsin.
Yorum yapmak için lütfen giriş yapın veya üye olun