对《模板,PHPLIB处理方式》一文的补充
长沙北大青鸟作者:科泰校区匿名
摘要:用模版设计网站,可以分开美工和程序员的工作,并且方便界面的修改和完善。所以,我用了PHPLib的template模版。 但是,其中却始终有个问题,就是block的使用,因为,哪怕是lib的帮助中的例子,也是错的,根本没法出来
用模版设计网站,可以分开美工和程序员的工作,并且方便界面的修改和完善。所以,我用了PHPLib的template模版。
但是,其中却始终有个问题,就是block的使用,因为,哪怕是lib的帮助中的例子,也是错的,根本没法出来结果。
为什么要用block呢?
比如说,要显示一个表格,那么表格的没一行需要重复显示(parse的时候,用参数true可以追加)。
但是,表格是一个文件的一部分,如果多次parse,只能造成整个表格的多次显示。
解决的一个办法是,将一个<tr>...</tr>单独放到另外一个文件,然后对那个文件循环parse,最后再对整个网页模版文件parse。功能可以实现,
但是很明显,没有了模版分离的优势,而是很麻烦。
好了,所以不得不用block(可能fast templage不支持的,我没用过FastTemplate,反正phplib的template支持)
比如一个模版文件如下:
<!-- main.htm -->
<html><head></head>
<body>
<table>
<tr><td>filed1</td><td>filed2</td></tr>
<!-- BEGIN row -->
<tr><td>{filed1}</td><td>{filed2}</td></tr>
<!-- END row -->
</table>
</bodky>
</html>
上面,定义了一个名为row的block,现在就可以让那一块重复parse了。
php文件为:
include "template.inc" //注意,你下载的template.inc文件65行左右,可能缺一个"/"
//,就是set_unknown()函数前的注释没有匹配。从PHPLib的发源地和phpuser下载的都有
//这个小问题,加上就行了。
$t= new Template(".");
$t->set_file("fhandle","main.htm");
$t->set_block("fHandle","row","{rows}");!!!!!Importment
// ~~~~其实,文件中的block被替换成了
// {rows}.注意,这里{}一定不能省!PHPLib自带的例子,
// 就是少了这个,所以不能正确显示!!
for($i=0;$i<10;$i++)
{
$t->set_var("filed1",".随便啦..");
$t->set_var("filed2",".随便啦..");
$t->parse("rows","row",true);
}
$t->parse("out","fHandle")
$t->p("out");
----------------
好了,试试上面的,OK啦!!
哈哈,花了我不少时间,今天从phpbuilder看到的!
都怪那个叫limoduo的,翻译了PHPlib的template使用的两篇文章,到了关键的block,就不再干了。
呵呵,今天终于找到了!
--
==============================================
发信人: OpenBall (爱我所爱~无怨无悔~), 信区: FreeDevelop
标 题: 哈哈,PHPLib的Template的Block终于可以用了!!
发信站: 交大兵马俑BBS站 (Sun Jul 30 19:40:37 2000), 转信
决斗时的先机,
来源于平常之心.