Yükleniyor ...

Üye giriş

E-posta adresiniz
Şifreniz
Şifremi unuttum

Üye Kayıt

Kullanıcı adı
E-posta adresiniz
Şifreniz
Şifre tekrar
Giriş yap

Codeigniter ile Smarty kullanımı

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 laughing.

İ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 laughing

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.

Yorumlar(0)

Yorum yapmak için lütfen giriş yapın veya üye olun