flame Codeigniter Template SistemiCodeigniter ile bu gün template sistemi yapmam gerekti ve kendim için bir template sistemi yaptım. Bu sistemi sizlede paylaşmak istiyorum.

Biliyorsunuz Codeigniter’da views adındaki klasöre view dosyalarımızı koyuyoruz. Ama bu views klasörünün yeri baya içlerde ve css gibi dosyaları genelde bu klasörden başka yerlere koyuyoruz. Şimdi yapacağımız sistemde Root’a templates adında bir klasör oluşturacağız. Bu klasörün içine template klasörleri, onların içinde ise layoutumuz ve view dosyalarımız bulunacak.

Şimdi codeigniter ana klasörü içine “templates” adında bir klasör açıyoruz. Bu klasörün içine ilk templatemiz olarak “default” adında bir klasör açıyoruz. Bu default klasörüz bizim ana tema klasörümüz olacak. Siz templates klasörünün içine istediğiniz kadar template koyabilirsiniz.

Template ayar dosyasını oluşturalım.
application/configs/template.php

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/*
|--------------------------------------------------------------------------
| Template
|--------------------------------------------------------------------------
*/
$config['template']="default";

/*
|--------------------------------------------------------------------------
| Title
|--------------------------------------------------------------------------
*/
$config['template_title']="Deneme Site";

/*
|--------------------------------------------------------------------------
| Description
|--------------------------------------------------------------------------
*/
$config['template_description']="Deneme Site açıklaması";

/*
|--------------------------------------------------------------------------
| Keywords
|--------------------------------------------------------------------------
*/
$config['template_keywords']="deneme,site";

/* End of file template.php */
/* Location: ./application/config/template.php */

Kendi loader dosyamızı oluşturuyoruz. CI 1 serisi için “application/libraries” klasörü içerisine, CI 2 serisi için “application/core” klasörünün içerisine koyacağız.

<?php
<?php

class MY_Loader extends CI_Loader
{
	private $CI;

	public function __construct()
	{
		parent::CI_Loader();

		$this->CI =& get_instance();
		$this->CI->config->load('template');

		$this->_ci_view_path = 'templates/'.$this->CI->config->item('template').'/';
	}

	public function view($view, $vars = array(), $return = FALSE)
	{
		//Template url belirtiliyor
		$data['template_url']= $this->CI->config->slash_item('base_url').'templates/'.$this->CI->config->item('template');
		$vars['template_url']= $data['template_url'];

		//Gelen view yükleniyor
		$data['template_view'] = $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => TRUE));

		//Title yükleniyor
		if (isset($vars['template_title']))
		{
			$data['template_title'] = $vars['template_title'].'-'.$this->CI->config->item('template_title');
		}
		else
		{
			$data['template_title'] = $this->CI->config->item('template_title');
		}

		//Description yükleniyor
		if (isset($vars['template_description']))
		{
			$data['template_description'] = $vars['template_description'];
		}
		else
		{
			$data['template_description'] = $this->CI->config->item('template_description');
		}

		//Keywords yükleniyor
		if (isset($vars['template_keywords']))
		{
			$data['template_keywords'] = $vars['template_keywords'];
		}
		else
		{
			$data['template_keywords'] = $this->CI->config->item('template_keywords');
		}

		return $this->_ci_load(array('_ci_view' => 'layout.php', '_ci_vars' => $this->_ci_object_to_array($data), '_ci_return' => $return));
	}
}

Şimdi layout dosyamızı hazırlıyoruz, layout dosyasını “templates/default” klasörünün içine koyacağız. Dosyanın adı “layout.php” olmalı. Tüm templatelerde bu dosya mutlaka olmalıdır.

<html>
<head>
	<title><?php echo $template_title?></title>
	<meta http-equiv="content-type" content="text/html;charset=utf-8" />
	<meta name='description' content="<?php echo $template_description?>" />
	<meta name="keywords" content="<?php echo $template_keywords?>" />
	<link rel="stylesheet" href="<?php echo $template_url?>/css/style.css" type="text/css" />
</head>
<body>
      <?php echo $template_view?>
</body>
</html>

Layout dosyanızı templatenize göre istediğiniz gibi düzenleyebilirsiniz. Kullanımı ise view dosylarınızı template klasörünüze atıyorsunuz bizim örneğimizde bu klasör “templates/default” tu. Controller kodlama mantığında ise herhangi bir değişiklilik yoktur. Template sistemimizin aynı zamanda seo özelliğide vardır.

Örnek Kullanım

/*
*Seo özellikleri
*girilmezse config dosyasındaki başlık,açıklama ve anahtar kelime girilecektir.
*/
$data['template_title'] = 'Sayfa Başlığı';
$data['template_description'] = 'Sayfanın açıklaması';
$data['template_keywords'] = 'Sayfanın anahtar kelimeleri';

//hiç bir farklılık olmadan aynı kullanım mantığı ile view dosyası yükleniyor.
$this->load->view('sayfa',$data);