smarty 不错啊,毕竟是官方的

解决方案 »

  1.   


    大致看了一下TinyButStrong, 没觉得太好.还是推荐smarty
      

  2.   

    不知你是否真的用过smarty,我觉得它根本没有你说得那么臃肿,那么庞大。他的语法和使用都是很方便的,可以把它看作php的一个知识扩充点,一个星期左右,你就可以很熟练的使用它了。
      

  3.   

    试下这个如何?
    http://www.phpx.com/happy/viewthread.php?tid=125229
      

  4.   

    "在模板中使用一个变量,就要在PHP文件中,特别的用语句给这个变量赋值"你想怎么样?这个是必须的
      

  5.   

    如果说smarty臃肿那就是无知,smarty其实很容易就上手的~强烈推荐smarty.
      

  6.   

    自己写标签,处理标签是最好的,适合高手--------------
    http://www.cosrc.com
    http://club.cosrc.com
      

  7.   

    的确是有点无知,但是smarty这样的巨无霸看了就晕,觉得smarty不符合PHP简单的一贯风格,把简单的事情复杂化了
    "在模板中使用一个变量,就要在PHP文件中,特别的用语句给这个变量赋值"你想怎么样?这个是必须的--我觉得像discuz那样最好不过了,你在PHP文件中使用的变量,可以直接在模版中用,不需要用setvar或者assign函数重新赋值
      

  8.   

    --我觉得像discuz那样最好不过了,你在PHP文件中使用的变量,可以直接在模版中用,不需要用setvar或者assign函数重新赋值
    ----------
    哦,推荐你自己写一个好了,这有什么难的....discuz不准用它的? hoho,你可以参考它的思路和代码,修改下再用嘛....
      

  9.   

    没用过别的,就用smarty,感觉还行
      

  10.   

    如果你实在不想用smarty那么你可以看看XMB里面的模板,应该和DZ的差不多。
      

  11.   

    smarty臃肿肥大?可能是,但是用起来还是很方便的啊,我是个php新手,接触smarty时间也不长,但是很快就上手了,smarty的基本用法是很简单很快捷的,很符合php简单的风格啊。“特别的用语句给这个变量赋值,有一种割裂的感觉。”????
    你用模板要的不就是要这种“割裂”的感觉嘛,把代码和html割裂开,两边清清楚楚的
      

  12.   

    http://phpsavant.com/ 
    你可能喜欢
      

  13.   

    我觉得用savant似乎又回到了不用模版的感觉了我觉得用smarty这种方式,感觉是彻底的割裂了PHP文件和模版之间的联系。虽然DZ的模版是比较简单的,就是用preg_replace替换,直接改一下固然可以,不过还是有抄袭的痕迹。如果自己重新模仿dz写一个,觉得还是有点不那么简单。而且,也有点浪费工作量。
    另外,请教一下楼上的,XMB是什么东东啊?
      

  14.   

    dz太简单了。简单到和不用模板没有任何差别。
    --我觉得不是这样,看遍了十几个模版,感觉dz的模版其实是举重若轻,大智若拙。如果dz能把他们的模版整理一下,开放出来,我觉得绝对是相当的好用。可惜,他们还没有这个想法
      

  15.   

    dz的“模板”不支持标签,对加快开发没有帮助。
    dz的“模板”不分离变量,对代码分离没有影响。
    dz的“模板”不支持缓存,对执行速度没有变化。模板的优点他一个都没有,好在什么地方?
      

  16.   

    现在主流编译型的模板带的“标签”,可以让你把相同的功成集成起来,每次使用只需要简单的一行,同时不会影响你任何执行速度。完全和你直接打代码的效率是一样的。这是编译型模板的最主要的优势。dz根本没有标签的支持,要么你把所有功能写成函数,不管用没用到全部载入,要么你每用一次copy或手打一次。代码分离的优势,最重要的就是数据库操作集中在前端,可以一次性把数据库操作完成后关闭连接,这样每个页面占用的数据库时间通常只有原来的一半,可以大大提高数据库的负载能力。dz的模板里还在继续操作数据库……缓存可以让你完全不操作数据库,不做任何运算直接输出静态页面,是一种终极的加速方案。dz是另外写了一套数组缓存,模板不提供任何缓存能力。如果以上都没有支持,那么那个模板是什么地方吸引了你?完全只是一种个人爱好?或者dz的模板有什么优点是别的模板所没有的,而又是很重要的?欢迎讨论。
      

  17.   

    非常感谢楼上的精彩回答,再请教几个疑惑:1、为何要分离变量呢?如果像dz那样,定义了变量就能用,岂非更加方便?
    如果分离变量,是否会降低效率,增大内存占用呢?2、“dz的“模板”不支持缓存,对执行速度没有变化。”
    可是dz是将模板翻译成了PHP文件,下次执行的时候直接用require函数包含进去(如果没有就重新生成),这样不是比用那些模板引擎,每次都生成模板类的实例,然后变量赋值,然后块内容填写,然后。。更有效率吗?3、smarty模板已经可以缓存数据库操作了吗?这样的缓存对类似论坛、商城这样频繁写入的数据库操作是否高效啊?数据库的缓存确实是个问题,最近写一个论坛插件的时候,发现就有这样的问题,为了提高效率,一些常用的通用代码表,不得不使用了数组,而不是数据表的方式来实现。但这样的方式确实不适合用在经常需要修改内容的代码表里面。4、目前好用的编译型模板,有那些啊?
    smarty算不算呢?
      

  18.   

    在主流编译型的模板带的“标签”,可以让你把相同的功成集成起来,每次使用只需要简单的一行,同时不会影响你任何执行速度。完全和你直接打代码的效率是一样的。这是编译型模板的最主要的优势。dz根本没有标签的支持,要么你把所有功能写成函数,不管用没用到全部载入,要么你每用一次copy或手打一次。--看了一下smarty的文档,对楼上讲述的标签不得要领,能否再简单讲述一下,标签在smarty里面对应哪个部分的功能啊?
      

  19.   

    1.变量为何要分离。你可以想像一下如果函数没有了内部变量,只能用全局变量的话(在多人合作开发时)会是多混乱的局面。你可以把模板对象抽象理解为一个大函数。分离变量就是给这个大函数传递参数。2.{dz是将模板翻译成了PHP文件,下次执行的时候直接用require函数包含进去(如果没有就重新生成)。}实际上所有编译型的模板都是这样做的,并非dz独有。dz论坛有缓存,不过不是模板级别上的,而是数据级别上单独实现的,缓存的是数据而不是结果(因为dz的使用者多是不懂技术的老板们,所以牺牲一些性能来减少硬盘使用量从dz的角度看是很合理的)。我个人觉得不好接受的是dz的代码并没有将数据库操作从模板里分离出来,而是在模板中继续执行sql语句。数据库实际上还是在页面关闭时才同时关闭。(我记得没错的话,在模板的文件尾还有一个update session的操作)。我觉得dz设计时应该并没有现在通用型模板框架的概念,他的模板设计目的仅是为方便论坛换肤。所以他存在于dz里非常合适,但要剥离出来用恐怕还要添加很多东西……3.smarty对于缓存的支持非常强大,并非只有生成静态文件这一种。论坛和商城是不是应该使用缓存这个和模板是否应该提供缓存功能没有任何关系。不过嘛,我写的论坛、商城里几乎每一页都有使用各种缓存。(我用的虽然不是smarty,不过和smarty非常象……)标签是很好理解的。看smarty手册Chapter 8. Custom Functions。smarty的标签扩展性非常强。
    -----------------
    以上纯属个人见解。该拍砖的拍砖,该献花的献花哈。dz是一个非常强的论坛。以上只是从模板角度来拿他和smarty比较而已(把一个论坛当成模板来和一个专业模板比较本身就不公平)。如果要找论坛,我还是推荐使用dz的。
      

  20.   

    想请教一下,Gdj老大用的是什么模板啊?想学习一下是smarty还是自己独立开发的呢?
      

  21.   

    你说的这个Custom Function也就是自定义标签,这种方式,应该和.net里面的类有点像吧,就是能自动生成相应功能的HTML代码的类。但是目前这样还带来了一个问题,就是目前的FrontPage和DW都不能可视化的支持这种自定义标签。(微软自己的类,肯定会支持的,但类似smarty这样的标签,恐怕还没有那么大的影响力)这就是说,影响了可视化的设计。个人觉得,是有利也有弊的做法。关于dz的模板里面操作SQL的情况,目前应该极少发生了,基本上都是在PHP文件里面操作的。而且以前supsite设计的时候也是用的dz的模板,现在dz的一些其它东东都是用这个模板设计的。看起来,dz的模板和dz的耦合度是很低的,刚才看了一下,里面只是用了一个全局变量--language。用在其它方面,作为一个轻量级的模板应该没问题的。至于多人开发的问题,个人觉得PHP在设计的时候,尽量考虑简单性和易用性,本来就没有很多的考虑多人开发,比如有人常常批评PHP没有命名空间的问题(但PHP在函数里面引用全局变量需要声明,也是不错的设计)。在正常情况下,即使类似DZ这样的项目,似乎也没有必要很多人同时开发一个文件。所以,个人感觉,PHP很适合个人单打独斗,另外,本人目前考虑的模板,也只要简单好用就行,不需要多人协作(短时间内没人跟俺协作,将来也指望不上)。多人协作,自然有多人协作的需求,我觉得不同的需求最好能分开。J2EE就是不分需求,搞的太庞大,所以才有了Spring和Hibernate之类的简化项目,是这样的吧?本人在PHP方面纯属菜鸟,胡说了一通,请大家指正,欢迎拍砖
      

  22.   


    有点明白了,smarty先判断缓存是否存在,如果存在是用fetch()函数来取缓存数据,否则就查询数据库,从数据库里面赋值,是吧?
      

  23.   

    就算是个人开发。也有必要变量分离。你不可能一直在做同一个项目,要维护以前做的项目是很正常的。分离做得不好的话维护一个两年前的项目时你就知道痛苦了。标签影响了可视化的设计,我不觉得。拿dw来说,标签的解释是用js脚本写的,接口开放,你可以自己研究一下也可以花钱买成品。做dw二次开发的人也不算少。dz5里仍然是在模板中操作数据库。那怕只有一个操作,那也和全部数据库都在模板里没多大差别了。他的数据库连接仍然是在页面结束时才关闭的。smarty缓存是目前php模板里最强的(能比这更快的就只能缓存在内存里,但实际你如有这么多内存的话,linux也会自动把缓存文件加载进内存根本不用操这个心)。smarty是首先判断用户是否已经访问过本页(参数不同将认为是不同的页),然后判断本页内容是否更改(这个函数得自己实现),如果都成立则直接返回让浏览器读本地缓存。然后才是判断服务器缓存是否存在并用fetch读取。缓存是我从smarty中受益最多的一块。我用的模板是自己写的。不过几乎和smarty的主框架完全一样,可以认为是smarty的精简版。smarty总大小300k,主文件60k,所以不启用缓存时有点慢。我精简成共17k,主文件10k,已经是超轻量级的模板了,但使用上和原smarty比并没有太多变化,只去掉了我认为重复实现的功能。我用这套模板做出一个论坛用时不到一个月,页面执行时间不到dz的一半,天上有地上无天花乱坠舌璨莲花神鬼回避大道天成哈哈有人骂我自卖自夸了赶紧逃……
      

  24.   

    觉得楼上应该发展一个好用的smarty简化版,发布出来,就叫smaty lite算了以前不是有人发布了adodb lite,也大受欢迎吗?
      

  25.   

    刚刚发现还有这么几个模板(似乎是编译型的):Flexy、Sigma(听说是Joomla用的,就是从mambo分化出来的那个CMS)、ITX不知道有没有人用过?
      

  26.   

    你别说,这个Smarty还真是有简化版呢刚刚发现,ZEND网站上有Smarty的简化版,已经改名为Template Lite了(据说是为了防止混淆),基本兼容Smarty的语法,大家快去看看吧,老外还真有意思(造什么都喜欢造一个大的,然后再照着大的造小的,哈哈):http://devzone.zend.com/node/view/id/98
      

  27.   

    几经周折,终于决定,还是用Smarty算了,不过我打算用Smarty的简化版Template Lite。反正语法差不多,将来想换Smarty也容易。另外,觉得这个TinyButStrong(有人称为“小强”模板,呵呵,确实是小又强啊)也不错,可惜没有编译功能,否则定是俺的不二之选,不过俺会继续关注的。再次谢谢楼上各位指点。