[PHP]模板引擎Smarty深入浅出介绍(2)


<?php 
  include "class/Smarty.class.php"; 
  define(@#__SITE_ROOT@#, @#d:/appserv/web/demo@#); // 最后没有斜线 
  $tpl = new Smarty(); 
  $tpl->template_dir = __SITE_ROOT . "/templates/"; 
  $tpl->compile_dir = __SITE_ROOT . "/templates_c/"; 
  $tpl->config_dir = __SITE_ROOT . "/configs/"; 
  $tpl->cache_dir = __SITE_ROOT . "/cache/"; 
  $tpl->left_delimiter = @#<{@#; 
  $tpl->right_delimiter = @#}>@#; 
  ?> 


照上面方式设定的用意在于,程序如果要移植到其它地方,只要改 __SITE_ROOT 就可以啦。 (这里是参考 XOOPS 的 )
  
  Smarty 的模版路径设定好后,程序会依照这个路径来抓所有模版的相对位置 (范例中是 @#d:/appserv/web/demo/templates/@# ) 。然后我们用 display() 这个 Smarty 方法来显示我们的模版。
  
  接下来我们在 templates 资料夹下放置一个 test.htm:(扩展名叫什么都无所谓,但便于视觉设计师开发,笔者都还是以 .htm 为主。)
  
  templates/test.htm:


  <html> 
  <head> 
  <meta http-equiv="Content-Type" content="text/html; charset=big5"> 
  <title><{$title}></title> 
  </head> 
  <body> 
  <{$content}> 
  </body> 
  </html> 
   

  现在我们要将上面的模版显示出来,并将网页标题 ($title) 与内容 ($content) 更换,请将以下档案内容命名为 test.php ,并放置在主资料夹下:
  
  test.php:


<?php 
  require "main.php"; 
  $tpl->assign("title", "测试用的网页标题"); 
  $tpl->assign("content", "测试用的网页内容"); 
  // 上面两行也可以用这行代替 
  // $tpl->assign(array("title" => "测试用的网页标题", "content" => "测试用的网页内容")); 
  $tpl->display(@#test.htm@#); 
  ?> 


请打开浏览器,输入  试试看(依您的环境决定网址),应该会看到以下的画面:
   
 

  再到 templates_c 底下,我们会看到一个奇怪的资料夹 (%%179) ,再点选下去也是一个奇怪的资料夹 (%%1798044067) ,而其中有一个档案:
  
  templates_c/%%179/%%1798044067/test.htm.php:


<?php /* Smarty version 2.6.0, created on 2003-12-15 22:19:45 compiled from test.htm */ ?> 
  <html> 
  <head> 
  <meta http-equiv="Content-Type" content="text/html; charset=big5"> 
  <title><?php echo $this->_tpl_vars[@#title@#]; ?\></title> 
  </head> 
  <body> 
  <?php echo $this->_tpl_vars[@#content@#]; ?\> 
  </body> 
  </html> 
   


 没错,这就是 Smarty 编译过的档案。它将我们在模版中的变量转换成了 PHP 的语法来执行,下次再读取同样的内容时, Smarty 就会直接抓取这个档案来执行了。
  
  最后我们整理一下整个 Smarty 程序撰写步骤:
  
  Step 1. 加载 Smarty 模版引擎。
  
  Step 2. 建立 Smarty 对象。
  
  Step 3. 设定 Smarty 对象的参数。
  
  Step 4. 在程序中处理变量后,再用 Smarty 的 assign 方法将变量置入模版里。
  
  Step 5. 利用 Smarty 的 display 方法将网页秀出。
  
  如何安排你的程序架构
  
  上面我们看到除了 Smarty 所需要的资料夹外 (class 、 configs 、 templates 、 templates_c) ,还有两个资料夹: includes 、 modules 。其实这是笔者模仿 XOOPS 的架构所建立出来的,因为 XOOPS 是笔者所接触到的程序中,少数使用 Smarty 模版引擎的架站程序。所谓西瓜偎大边,笔者这样的程序架构虽没有 XOOPS 的百分之一强,但至少给人看时还有 XOOPS 撑腰。
  
  includes 这个资料夹主要是用来放置一些 function 、 sql 檔,这样在 main.php 就可以将它们引入了,如下:
  
  main.php:
  


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/12482a27b7aeccb8a7834d8fd7f09ea3.html