Codeigniter Smarty integrációval
A leírásban lecseréljük az alapértelmezett sablonkezelő rendszert a Smarty-ra. A csere nem kötelező jellegű de a Smarty egy letisztult sablonkezelő amely rengeteg terhet levesz a fejlesztő válláról, és a designerek munkáját is nagyben megkönnyíti mivel olvashatóbb a kód.A cikkhez tartozik egy letöltés ami a tartalmazza a bejegyzés születéskor elérhető legújabb változatot a Smarty-ból.
A Smarty sablonkezelő rendszer nagy tömegeket oszt meg atekintetben hogy hasznos vagy nem. Az a fontos hogy hatékonyan tudjál benne dolgozni, és egy esetlegesen új közegeben, keretrendszerben is tudjad használni, a már meglévő sablonjaidat, plugin-jeidet stb.. A lényeg a gyors, pontos, percíz átlátható munka view oldalon is, ha ehhez a Smarty eszköz akkor hajrá.
Megjegyzem a legjobb eszköz is árthat akkor, ha nem arra használjuk amire való, ez ebben az esetben is igaz. Ha a Smarty sablonon akarunk megoldani komoly programozási feladatot akkor az nem szerencsés választás (szerencsére a framework nagyban korlátoz ebben).
Miért hasznos a Smarty:
- Hatékony a Cache funkciója
- Designereknek is átlátható kódot eredményez a view forrása
- Egyszerű és újrafelhasználható sablon elemek
- Rengeteg bővítmény található hozzás és írni sem nehéz hozzá
- Folyamatos fejlesztés alatt van (ez lehetne gyorsabb ütemű)
- A legtöbb keretrendszerbe könnyen integrálható
- Jó dokumentációval rendelkezik
- A tanulásához nem kell túl sok idő
- Hatékonyan lehet vele elválasztatni az megjelenést az üzleti logikától
- Alapból elérünk a sablonon állandókat, rendszer változókat
Smarty beszerzés és elhelyezése a keretrendszerben
Letöltés után a kicsomagolt változatból a lib mappa tartalmát másoljuk a system/application/libraries/smarty. A smarty mappát hozzuk létre, mert az ott nincs.
A képen látható fájlokat kell tartalmaznia a smarty mappának

Hozzuk létre a Smarty által használt Sablon mappákat.

Adjunk az összes mappára 0777 jogosultságot.
Smarty lib konfigurálása
Hozzunk létre egy PHP fájlt a system/application/libraries/ mappában smarty_tpl.php néven. Ez egy konfigurációs állomány, amelyet induláskor betöltünk. Itt közölhetjük a Smarty-val hol lesz a sablon mappánk, vagy a lefordított sablonok helye.
A fájl tartalma az alábbi legyen:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); //smarty class require APPPATH . "libraries/smarty/Smarty.class.php"; //system/application/libraries/smarty_tpl.php class smarty_tpl extends Smarty{ function smarty_tpl(){ $this->Smarty(); //sablonok mappa $this->template_dir= APPPATH."views/templates"; //lefordított sablonok mappa $this->compile_dir= APPPATH."views/templates_c"; //cache mappa $this->cache_dir= APPPATH."views/cache"; //config mappa $this->config_dir= APPPATH."views/config"; //sablon újra ellenőrzés be $this->compile_check= true; //cache ki $this->caching= false; $this->cache_lifetime= 86400; } }
Smarty Lib betöltése automatán minden induláskor
Ehhez egy bejegyzést kell elhelyeznünk a system/application/config/autoload.php fájlban. Így minden betöltéskor a Smarty sablonunk rendelkezésre fog álni.
/* | ------------------------------------------------------------------- | Auto-load Libraries | ------------------------------------------------------------------- | These are the classes located in the system/libraries folder | or in your system/application/libraries folder. | | Prototype: | | $autoload['libraries'] = array('database', 'session', 'xmlrpc'); */ $autoload['libraries'] = array("smarty_tpl");
Ha éppen controller-be szeretnénk betölteni akkor a fenti rész felejtős és az adott kontrollerbe írjuk be a következőt:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class teszt extends Controller { function teszt() { parent::Controller(); $this->load->library("smarty_tpl"); } function index() { $this->smarty_tpl->assign("ok", "betöltve!"); $this->smarty_tpl->display("welcome_message.tpl"); } } /* End of file teszt.php */ /* Location: ./system/application/controllers/teszt.php */
Módosítsuk a wellcome controllert:
<?php class Welcome extends Controller { function Welcome() { parent::Controller(); } function index() { $this->smarty_tpl->assign("ok", "betöltve!"); $this->smarty_tpl->display("welcome_message.tpl"); } } /* End of file welcome.php */ /* Location: ./system/application/controllers/welcome.php */
Ha minden jólmegy és a welcome_message.tpl is módosítottad ahogy azt megkívánja a Smarty akkor ezt a képet fogod látni.

Hogyan éred el a Smarty funkciókat:
$this->smarty_tpl->assign("nev", $var); $this->smarty_tpl->display("lorem.tpl"); $var = $this->smarty_tpl->fetch("lorem.tpl");
A leíráshoz csatoltam egy Smarty-val 2.6.26-os változatával integrált CodeIgniter 1.7.1-es keretrendszert.
Letöltések
- Codeigniter keretrendszer kiegészítése Smarty Sablonkezelő rendszerrel
- Codeigniter 1.7.1-es változata kiegészítve Smarty 2.6.26-al.

