认识phpbb3风格系统
  转载自http://blog.sina.com.cn/s/blog_51c0555701009zqi

phpbb3的风格使用的是Smarty模板引擎,使用过XOOPS的朋友一定对这个东东不陌生,XOOPS的风格系统同样的也是使用了Smarty模板引擎。

那么对于不明白Smarty的朋友来说,究竟什么是Smarty模板引擎呢?(由于我们只是讨论phpbb3的风格制作嘛所以在这里就不详细说明了,想要研究这个的朋友可以访问Smarty中文手册来详细了解。这里我们只是让大家有个初步的认识,以便大家熟悉phpbb3风格系统工作的原理,在以后制作风格的时候可以容易地分辨模板文件中的代码)。

简单的来说,Smarty模板引擎将php程序中的各种函数和变量都编译成了模板变量,一个小小的变量就代表了一大堆php代码所表示的功能,在模板中只需要将这些短小的变量加入到你想要的位置,就可以实现代码的功能;这就使得程序员和风格设计者可以各自进行独立的工作而不需要程序员为了设计风格而再学习HTML等相关知识,风格设计者也不需要为了设计风格而再去学习php知识。我们把php程序中众多的的函数和变量比喻成一颗颗糖果,而Smarty模板引擎就像是糖纸,我们不需要知道那些糖果是怎么做出来的,我们只要看到糖纸就会知道这个糖纸包裹的是一个什么样的糖果;超市的工作人员可以轻易的根据糖果的包装来把糖果摆放到你想要的位置而不用关心它的制作过程。程序员是糖果生产者,超市员工就是风格设计者。
看到这里,我想你大概就知道了什么是Smarty模板引擎了吧,并且我相信你也已经认识到了,其实做phpbb3的风格就像是垒积木一样。0



以下是一些Smarty模板引擎的基础知识,大家可以再更进一步了解一下(虽然不要求,不过我觉得还是有必要的,要不就不写了)





  使用Smarty的一些概念
  
  在一般模版引擎中,我们常看到区域的观念,所谓区块大概都会长成这样:
  <!-- START : Block name -->
  区域内容
  <!-- END : Block name -->
  
  这些区块大部份都会在 PHP 程序中以 if 或 for, while 来控制它们的显示状态,虽然模版看起来简洁多了,但只要一换了显示方式不同的模版, PHP 程序势必要再改一次!
  
   在 Smarty 中,一切以变量为主,所有的呈现逻辑都让模版自行控制。因为 Smarty 会有自己的模版语言,所以不管是区块是否要显示还是要重复,都是用 Smarty 的模版语法 (if, foreach, section) 搭配变量内容作呈现。这样一来感觉上好象模版变得有点复杂,但好处是只要规划得当, PHP 程序一行都不必改。
  
  由上面的说明,我们可以知道使用Smarty 要掌握一个原则:将程序应用逻辑与网页呈现逻辑明确地分离。就是说 PHP 程序里不要有太多的 HTML 码。程序中只要决定好那些变量要塞到模版里,让模版自己决定该如何呈现这些变量 (甚至不出现也行) 。