发新话题
打印

转贴:HTML::KTemplate模块使用指南[一]

转贴:HTML::KTemplate模块使用指南[一]

  HTML::KTemplate模块使用指南[一]
介绍HTML::KTemplate模块是由Kasper Dziurdz先生开发一款功能强大的HTML代码解析的模块,模块功能非常强大,功能灵活,而不臃肿,这里不做过多的评价,使用后我想大家就会赶到这个模块的强大语法了以及功能了。
安装方法:
安装程序会把HTML::KTemplate安装到perl模块库中的HTML目录下 :
1.Windows下安装方法:
ppm> search HTML::KTemplate
Searching in Active Repositories
1. HTML-KTemplate [1.32] Perl module to process HTML templates.
ppm> install HTML-KTemplate
c:\perl –e “use HTML::KTemplate;”
#测试是否安装上了HTML::KTemplate,如若安装上什么也不会显示,如若没有安装上,就会抛出错误信息。
2.Linux下安装方法:
[root@bloves.org]#wget http://search.cpan.org/CPAN/auth ... emplate-1.33.tar.gz
[root@bloves.org]#tar -vzxf HTML-KTemplate-1.33.tar.gz
[root@bloves.org]#cd HTML-KTemplate-1.33
[root@bloves.org]#perl Makefile.PL
[root@bloves.org]#imake test
[root@bloves.org]#make install
[root@bloves.org]# perl –e “use HTML::KTemplate;” #测试
使用方法:#下面使用的例子基本上都是copy说明文件中的。

<html>
<head><title>[% TITLE %]</title>
<body>

Hello! [% TEXT %]<p>

<!-- BEGIN LOOP --> #循环开始,名字为LOOP,这个名字在程序中需要使用

[% TEXT %]<br> #循环中需要替换的变量

<!-- END LOOP --> #结束循环,必须加上这个,否则KTemplate会抛出错误,并停止运行.

</body>
</html>


解析上面的Html模板:



#!/usr/bin/perl -w
use HTML::KTemplate;
$tpl = HTML::KTemplate->new(&#39;path/to/templates&#39;);
#设定根目录,这个是必须的,否则KTemplate在开发文件时会出错。

$tpl->assign( TITLE => &#39;Template Test Page&#39; );
#给变量赋值。
$tpl->assign( TEXT => &#39;Some welcome text ...&#39; );
#给变量赋值
foreach (1 .. 3) {
#开始循环.循环的块是LOOP块
#替换LOOP块中的[% TEXT%]为”Just a test …”;
$tpl->assign( LOOP,
TEXT => &#39;Just a test ...&#39;,
);
}
#处理模板文件
$tpl->process(&#39;template.tpl&#39;);
print "Content-type: text/html\n\n";
$tpl->print(); #输出显示

多层循环嵌套结构:
有时开发web程序时,需要一些嵌套的模板结构,KTemplate模块的嵌套循环功能真是为这个应用准备的。
在KTemplate模块中有全局变量和局部变量之分,所以在使用的时候需要小心。
下面是一个例子:

<!-- BEGIN LOOP_ONE -->
<p>bloves</p>
<!-- BEGIN LOOP_TWO -->
ID:[% VAR %]<br>[% title %]
<!-- END LOOP_TWO -->
<p>royce</p>
<!-- END LOOP_ONE -->


use HTML::KTemplate;
my $Template = HTML::KTemplate->new(root=>&#39;e:/modperl/perl/bin/&#39;);
for(1..3){
$Template->block(&#39;LOOP_ONE&#39;);
for(1..4){
$Template->block(&#39;LOOP_ONE.LOOP_TWO&#39;);
#当嵌套循环时内层循环需要提供上一层的符号,也就是我们这里的LOOP_ONE.LOPP_TWO这样的形式,这里是说我们的LOOP_TWO循环是嵌套在LOOP.ONE中。
$Template->assign(VAR => &#39;txt&#39;,title=>&#39;bloves&#39;);
#注意上面的语句,因为在单循环中,在赋值循环中赋值需要提供循环块的符号(这里是LOOP_TWO).但在多层循环中就不可以这样,因为KTemplate按就近原则取得需要赋值的变量。
#$Template->assign(title=>&#39;bloves&#39;);
}
$Template->block();
}
$Template->process("test.html");
print "Content-type: text/html\n\n";
$Template->print();
这次就先到这吧,时间不早了,改天继续写。包括缓存的支持等,甚至分析这个原代码。这个程序写的非常漂亮,俺比较喜欢。

当然你可以查看这个模块的文档:
http://search.cpan.org/~kasper/H ... KTemplate.pm#AUTHOR
_________________

TOP

引用:
下面是引用cnyouker于2006-03-21 22:29发表的转贴:HTML::KTemplate模块使用指南[一]:
  HTML::KTemplate模块使用指南[一]
介绍HTML::KTemplate模块是由Kasper Dziurdz先生开发一款功能强大的HTML代码解析的模块,模块功能非常强大,功能灵活,而不臃肿,这里不做过多的评价,使用后我想大家就会赶到这个模块的强大语法了以及功能了。
安装方法:
安装程序会把HTML::KTemplate安装到perl模块库中的HTML目录下 :
1.Windows下安装方法:
.......
非常好,原来bloves写的这个文档。 不过好象没有[二] 。。

chifeng可以参考此文档。其实ktemplate当时选为extmail的模板引擎也是因为其小巧,功能强大,
速度还不错,代码写得好等原因:)
欢迎使用下列开源软件: 高性能邮件系统- ExtMail Spam Locker反垃圾邮件系统

TOP

^_^。
爽哦。被置顶喽!!!

TOP

学习。。。。ing。。。。。

我学习一下,写个[二]
http://extmail.org
http://postfix.org.cn
-------- chifeng

TOP

新手说明:
  $tpl = HTML::KTemplate->new(&#39;path/to/templates&#39;);  在这个地方,括号里应该是存放模板的一个路径,不需要指出文件名。。
  $tpl->process(&#39;template.tpl&#39;);  在这个地方,括号里,的文件名是你在上边一个路径下,的一个模板文件。也就是本例子中的以下代码所保存的文件名。

<html>
<head><title>[% TITLE %]</title>
<body>

Hello! [% TEXT %]<p>

<!-- BEGIN LOOP --> #循环开始,名字为LOOP,这个名字在程序中需要使用

[% TEXT %]<br> #循环中需要替换的变量

<!-- END LOOP --> #结束循环,必须加上这个,否则KTemplate会抛出错误,并停止运行.

</body>
</html>



PS:感谢学习过程中,BBC的无私帮助。。。。。

TOP

当然这个HTML::KTemplate 还有多种用法。。。继续学习中。。。。

希望大家不要只限于这一种用法。。。。

TOP

哈哈!没想到04年写的文章,现在还能看到。我自己的都没了!
现在和朋友在开发yougedi.com所以KTemplate好久没用了。
Yougedi.com

TOP

引用:
下面是引用bloves于2006-04-17 10:55发表的:
哈哈!没想到04年写的文章,现在还能看到。我自己的都没了!
现在和朋友在开发yougedi.com所以KTemplate好久没用了。
楼上的大哥,yougedi.com看上去不错,问一下是怎么区分中介和个人的?

TOP

二是不是没有出来,只能看英文的了。

HTML::KTemplate 如果不直接安装包,是直用采用KTemplate.pm并在

unshift @INC,&#39;/usr/local/httpd/htdocs/extman/libs/&#39;;
代码如下
复制内容到剪贴板
代码:
unshift @INC,&#39;/usr/local/httpd/htdocs/extman/libs/&#39;;
#print @INC;
@ISA=qw(Exporter HTML::KTemplate);
use Exproter;
use HTML::KTemplate;
$tpl = HTML::KTemplate->new(&#39;/usr/local/httpd/htdocs/extman/html/standard&#39;);
$tpl->assign( TITLE => &#39;Template Test Page&#39; );
$tpl->assign( TEXT => &#39;Some welcome text ...&#39; );
foreach (1 .. 3) {
$tpl->assign( LOOP, TEXT => &#39;Just a test ...&#39;);
}
$tpl->process(&#39;test.html&#39;);
print "Content-type: text/html\n\n";
$tpl->print();
其错误结果为:
复制内容到剪贴板
代码:
Can&#39;t locate Exproter.pm in @INC (@INC contains: /usr/local/lib/perl5/5.8.8/i686-linux /usr/local/lib/perl5/5.8.8 /usr/local/lib/perl5/site_perl/5.8.8/i686-linux /usr/local/lib/perl5/site_perl/5.8.8 /usr/local/lib/perl5/site_perl .) at ./htmltempl.pl line 5.
BEGIN failed--compilation aborted at ./htmltempl.pl line 5.
我知道这个结果是什么原因,但是我输出print @INC 确有这个目录的。这里就不知道为什么找不到该模块了。
/usr/local/httpd/htdocs/extman/libs/HTML/KTemplate.pm是这个文件位置。
http://blog.chinaunix.net/index.php?blogId=3052

TOP

引用:
下面是引用jacksonluo于2006-10-10 15:26发表的:
二是不是没有出来,只能看英文的了。

HTML::KTemplate 如果不直接安装包,是直用采用KTemplate.pm并在

unshift @INC,&#39;/usr/local/httpd/htdocs/extman/libs/&#39;;
.......
楼主拼写错误:
引用:
Exproter.pm
论坛另一个版块的帖子已经说过了
请引用或摘抄本站文章信息的朋友,保留本站链接及作者信息,保护版权,谢谢。

构建高性能大容量开源邮件系统- ExtMail

Postfix在中国官方网站

TOP

可以比较吗?  比如   A=B   A>B    A!=B这样的运算符吗?如果有,也是这样表示的吗???
铁杆EMOS群用户.QQ群号::69453393

TOP

发新话题