Bildiklerim ve öğrendiklerim
Codeigniter Template Sistemi
Codeigniter 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);
| This entry was posted by Erhan on 16 Haziran 2010 at 16:56, and is filed under Codeigniter. Follow any responses to this post through RSS 2.0. Yorum veya kendi sitenizden geribildirim yapabilirsiniz. |
yaklaşık 2 ay önce
Teşekkürler güzel sistem
yaklaşık 1 ay önce
Aynısını bende yaptım buradan bağımsız olarak. demekki aklın yolu bir miş.
Dx Auth ile ilgili de makaleler olursa çok faydalı olur gibi