Codeigniter Smarty integrációval


CodeIgniter SmartyA 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á.

Smarty template rendszer

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ó
  • 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

Töltsük le a hivatalos oldalról a legújabb Smarty-t

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

Ezeket kéne bemásolni a libraries/smarty mappába

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

Hozzuk létre a Smarty-nak szükséges 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:

  1. <?php if (!defined('BASEPATH')) exit('No direct script access allowed');
  2.  
  3. //smarty class
  4. require APPPATH . "libraries/smarty/Smarty.class.php";
  5.  
  6.  
  7. //system/application/libraries/smarty_tpl.php
  8. class smarty_tpl extends Smarty{
  9.  
  10.     function smarty_tpl(){
  11.         $this->Smarty();
  12.         //sablonok mappa
  13.         $this->template_dir=    APPPATH."views/templates";
  14.         //lefordított sablonok mappa
  15.         $this->compile_dir=     APPPATH."views/templates_c";
  16.         //cache mappa
  17.         $this->cache_dir=       APPPATH."views/cache";
  18.         //config mappa
  19.         $this->config_dir=      APPPATH."views/config";
  20.  
  21.         //sablon újra ellenőrzés be
  22.         $this->compile_check=   true;
  23.  
  24.         //cache ki
  25.         $this->caching=         false;
  26.         $this->cache_lifetime=  86400;
  27.     }
  28. }

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.

  1. /*
  2. | -------------------------------------------------------------------
  3. |  Auto-load Libraries
  4. | -------------------------------------------------------------------
  5. | These are the classes located in the system/libraries folder
  6. | or in your system/application/libraries folder.
  7. |
  8. | Prototype:
  9. |
  10. |    $autoload['libraries'] = array('database', 'session', 'xmlrpc');
  11. */
  12.  
  13. $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:

  1. <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2.  
  3. class teszt extends Controller {
  4.  
  5.     function teszt()
  6.     {
  7.         parent::Controller();
  8.         $this->load->library("smarty_tpl");
  9.     }
  10.    
  11.     function index()
  12.     {               
  13.         $this->smarty_tpl->assign("ok", "betöltve!");
  14.         $this->smarty_tpl->display("welcome_message.tpl");
  15.     }
  16. }
  17.  
  18. /* End of file teszt.php */
  19. /* Location: ./system/application/controllers/teszt.php */

Módosítsuk a wellcome controllert:

  1. <?php
  2.  
  3. class Welcome extends Controller {
  4.  
  5.     function Welcome()
  6.     {
  7.         parent::Controller();   
  8.     }
  9.    
  10.     function index()
  11.     {               
  12.         $this->smarty_tpl->assign("ok", "betöltve!");
  13.         $this->smarty_tpl->display("welcome_message.tpl");
  14.     }
  15. }
  16.  
  17. /* End of file welcome.php */
  18. /* 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.

A Smarty-val szerelt Codeigniter keretrendszer módosított üdvözlő oldala

Hogyan éred el a Smarty funkciókat:

  1. $this->smarty_tpl->assign("nev", $var);
  2. $this->smarty_tpl->display("lorem.tpl");
  3. $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.


Smarty, Codeigniter, PHP codeigniter, smarty, template, integracio






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.


Hozzászólás beküldése:


http://domain.tld (nofollow)
 ____    __     ___  _____  ___  ____ 
( ___)  /__\   / __)(  _  )/ __)(_  _)
 )__)  /(__)\ ( (_-. )(_)( \__ \ _)(_ 
(__)  (__)(__) \___/(_____)(___/(____)



 
 
 
 
Powered By: PHP, Smarty, MySQL, CodeIgniter, jQuery, ArtH2O