免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: HonestQiao
打印 上一主题 下一主题

[模板 下载地址更新] SmartTemplate(适用于企业级PHP开发的模板引擎) [复制链接]

论坛徽章:
0
81 [报告]
发表于 2005-12-13 22:44 |只看该作者
探讨:
关于例子,SmartTemplate本身就有load_config,把你这样子类似配置的部分,直接使用一个配置文件了。


load_config 和我说的自定义标签是两码事哦。我可以用这个自定义标签实现很多功能,而 load_config 仅仅是载入配置文件而已。

对于程序员而言,使用任何一个模板系统,语法他都要学,这个并不是SmartTemplate的错或者缺点,但是你拿来专门说。
对于美工而言,{TITLE}这样子的方式(甚至{文章标题}),他可以很容易的看到实际的效果,而<??>的方式,势必要差一些。
所谓让美工嵌代码,那当然是幻想。但是程序和美工是可以很好的协作分工的。


这点我赞成,任何模版都需要学习。当时我打那段话还有一段,可能不小心按 ctrl_z 弄丢了。也是提到 {TITLE} 这样的形式在 DW 预览起来效果更好,而 <!-- --> 来设置控制结构又不会破化页面布局。

让美工和程序员融洽协作,选择什么模版系统只是很小一个方面,重要的再于美工到底能不能理解到 HTML 标签的作用。

因为如果美工连 HTML 标签都搞不懂(很多美工只会在预览模式下画表格),那么对于修改嵌入了代码的模版自然会很头痛。



最后,我要特别说一下 Smart Template 的 use_cache()。

这个方法判断当前模版内容是否有缓存版本,如果有且没有失效,则直接读取缓存文件并输出,然后。。。。。

然后,会执行 die()。这是一个严重的设计失误!


这个问题在复杂的应用程序里面很严重。例如我需要获取生成的内容做其它用途(保存到数据库、发送电子邮件),或者在输出之后追加其它内容,那么我势必不能使用 use_cache() 方法,从而也就放弃了 Smart Template 的 cache 功能。

论坛徽章:
0
82 [报告]
发表于 2005-12-13 23:02 |只看该作者
原帖由 dualface 于 2005-12-13 22:44 发表
然后,会执行 die()。这是一个严重的设计失误!


这个问题在复杂的应用程序里面很严重。例如我需要获取生成的内容做其它用途(保存到数据库、发送电子邮件),或者在输出之后追加其它内容,那么我势必不能使用 use_cache() 方法,从而也就放弃了 Smart Template 的 cache 功能


我基于smarttemplate作了一个自己用的改进版,当时也碰到这方面的问题.

在 use_cache() 中增加控制参数决定是否运行 die, 因为甚至有些时候我并不想直接 output

关于缓存(cache)方面的确有很多细节要设计, 像论坛这种东西都有一套会员系统, 就拿 CU来说, 头上都有一句 "你好, hightman ..." 那么注定这种页面就不能用 cache了. 而实际上底下的文章应该可以进行 cache .

cache 要设计好也挺复杂的. 要顾虑很多东西

论坛徽章:
0
83 [报告]
发表于 2005-12-14 07:35 |只看该作者

回复 80楼 HonestQiao 的帖子

我是apache1.3

论坛徽章:
0
84 [报告]
发表于 2005-12-14 08:52 |只看该作者
HonestQiao:
我找了一下 ob_start() 的用法,这是手册上的说明,他提到了output_callback函数会在ob_end_flush()调用后执行,我想会不会是整个模板没有调用ob_end_flush来激活output_callback()函数。


  1. An optional output_callback function may be specified. This function takes a string as a parameter and should return a string. The function will be called when ob_end_flush() is called, or when the output buffer is flushed to the browser at the end of the request. When output_callback is called, it will receive the contents of the output buffer as its parameter and is expected to return a new output buffer as a result, which will be sent to the browser. If the output_callback is not a callable function, this function will return FALSE.


复制代码


于是我在output()函数的include($this->cpl_file);后面加上了ob_end_flush() ,这样在tmp目录下面就成生了缓存文件,不知道是不是这儿的问题,如果是有这个问题那这个ob_end_flush()放在哪个位置最好呢。谢谢HonestQiao

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
85 [报告]
发表于 2005-12-14 09:26 |只看该作者
or when the output buffer is flushed to the browser at the end of the request.

你的程序在请求完成退出的时候,它应该会自动调用的。

你把它加到:output()之中的unset ($_top);之前,应该就可以了。

论坛徽章:
0
86 [报告]
发表于 2005-12-14 13:12 |只看该作者
如果作静态生成。。看不出这个比phplib的模板类强在哪里。。呵呵

论坛徽章:
0
87 [报告]
发表于 2006-06-16 16:50 |只看该作者
我想做一个显示 3*3 的表格数据,这个模板要如何做?

论坛徽章:
0
88 [报告]
发表于 2006-06-21 01:27 |只看该作者
支持

论坛徽章:
0
89 [报告]
发表于 2006-07-24 17:37 |只看该作者
看了一天.我用的是phplib.

论坛徽章:
0
90 [报告]
发表于 2006-07-24 19:32 |只看该作者
恩,支持下帮主,用smarty 或 smartpTemplate 无所谓,能用出心得来的 , 不错 !
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP