CodeIgniter’da şablon mantığı bir çok farklı çeşitte çalıştırılabilmektedir. Birden fazla şablonun bir araya getirilerek kullanıldığı basit bir şablon yönetmini anlatmak istiyorum.Aşağıda kodlarını verdiğim Layout kütüphane dosyası ile sitemizin ekrana yansıyan görüntülerini modüler hale getirmemiz mümkün olacaktır. Bu dosyanın yeri application/libraries dizini altındadır ve ismi layout.php olarak kayıtlı olmalıdır.if (!defined(‘BASEPATH’)) exit(‘No direct script access allowed’);class Layout{var $obj;var $layout;function Layout($layout = “”){$this->obj =& get_instance();$this->layout = $layout;}function setLayout($layout){$this->layout = $layout;}function view($view, $data=null, $return=false){$data[‘sablon_icerigi’] = $this->obj->load->view($view,$data,true);if($return){$output = $this->obj->load->view($this->layout,$data, true);return $output;}else{$this->obj->load->view($this->layout,$data, false);}}} Layout kütüphanesini incelersek, bu kütüphanemiz iki metoddan oluşmaktadır: setLayout ve view metodları. setLayout metodu, ana şablonumuzu göstermek için kullandığımız metoddur. Her controller, hatta her controller metodu için farklı şablon kullanabilme serbestliği verir. Bu yönüyle her amaca uygun çok farklı tasarımlı siteler tanımlayabiliriz.View metodu ise CodeIgniter’ın view metodu gibi çalışır. Bu metoda, ekrana yazdırmayı düşündüğümüz data değişkenlerini göndeririz. Eğer “return” değişkeni değeri TRUE ise gönderdiğimiz değişkeni ekrana yazdırır. Bu metod içinde kullanılan $data[‘sablon_icerigi’] değişkeni ana şablon dosyamızın içinde $sablon_icerigi isimli bir değişken olmasını gerektirir. Bu değişken aracılığıyla gönderdiğimiz $data değişkeni ekrana yazdırılır.Konuyu bir örnekle açıklayalım. Ardından application/autoload.php dosyamızın içinde bulunan ve her açıldığında yüklenecek özel kütüphane dosyalarımızı yazdığımız değişkene layout kutuphanemizi tanıtıyoruz.$autoload[‘libraries’] = array(‘layout’); Böylece sitemiz her çalıştığında layout.php isimli kütüphanemizin otomatik olarak yüklenmesini sağlıyoruz. Şimdi Goster isimli bir controller dosyamızın olduğunu düşünelim ver bu isimli bir dosyayı application/controller dizini altına oluşturalım. Goster controller’ı, yan menü, üst menü ve içerik dosyalarını ana şablon üzerinde ekrana basmak amacını taşısın. Bunlara uygun controller dosyamızın içeriği şöyle olacaktır:class Goster extends Controller {function Goster(){parent::Controller();//şablon için ana view dosyamızı tanımlıyoruz$this->layout->setLayout(‘ana_sablon’);}function index(){//return opsiyonunu TRUE gönderiyoruz!$data[‘yan_menu’] = $this->load->view(‘yan_menu_view’,”,true);$data[‘ust_menu’] = $this->load->view(‘ust_menu_view’,$data,true);$data[‘degisken_1’] = $_SERVER[‘HTTP_USER_AGENT’];$this->layout->view(‘icerik_view’,$data);}} Goster controller’ına ait yukarıdaki kodlarda en önemli konu, $this->load->view sınıfına gönderdiğimiz ara dosyaların (ust_menu_view, yan_menu_view dosyaları) return değişkenlerinin TRUE olarak ayarlanması gerektiğidir. Böylece, bu dosyalar hafızaya atılır ancak ekrana yazdırılmaz ancak $this->layout->view(‘icerik_view’,$data); satırı ile birlikte hafızaya alınan bu dosyalar ekrana yazdırılır.Bu amaçla application/view dizini altında bulunan ust_menu_view.php dosyamızın içine üst menüde görünmesini istediğimiz likleri vererek html kodlarını yazıyoruz. Örneğimizin çok karışık olmaması amacıyla CSS kodlarını elimden geldiğince kısa tuttum. Sizler kendi uygulamanızda HTML ve CSS kodlarını kendi isteğinize göre düzenleyebilirsiniz.Aynı şekilde application/view dizini altında bulunan yan_menu_view.php dosyamızın içine yan menüde görünmesini istediğimiz likleri vererek html kodlarını yazıyoruz.Ana içeriğin görülmesini istediğimiz dosya olan icerik_view.php dosyamızı da yine application/view dizini altına ekleyerek html kodlarını yazıyoruz. Bu dosya içinde Goster controller’ı aracılığıyla Model dosyalarından çektiğimiz veritabanı bilgilerini de değişkenler kullanarak yazdırabiliriz (Ben örneğimizde değişkenlerin kullanımı ile ilgili olarak kullandığınız internet tarayıcısının değerini gösteren HTTP_USER_AGENT değişkenini yazdırdım).Layout kütüphanesi kullanılırken dikkat etmemiz gereken önemli noktalardan biri de $data değişkenini $this->layout->view(‘icerik_view’,$data); satırı ile aktarmayı unutmamak olmalıdır.Bu yazıda anlatılan dosyalara bu adresteki zipli application dizini aracılığıyla ulaşabilir, CodeIgniter yükledikten sonra gerekli ayarların yapılmasının ardından kullanabilirsiniz.