对《模板,PHPLIB处理方式》一文的补充 |
作者:匿名 发布时间:2002-12-28 来源:phpuser
|
用模版设计网站,可以分开美工和程序员的工作,并且方便界面的修改和完善。所以,我用了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), 转信
决斗时的先机, 来源于平常之心.
|
|
|
|
|