leobbs與Template
簡言:
leobbs 開發已了多年,使用者眾,相對美化版本亦相對增多,奈何因官方程序中沒有通用的Template接口,使市面很多美化版於轉換中出錯,而且亦因html代碼太多,而做成CGI檔案過太、重複代碼過量,引發起修改上的麻煩,而美化版亦因官方釋出新版本而令其開發中斷及需要重新修改,建議官方使用現有的 HTML::Template 模組,因 HTML::Template 技術很成熟,而安全性及功能亦較為完善,在國外內亦有其領導位置,而且只需要上載 HTML/Template.pl 就可以使用。
技術重點:
一:通過Template技術,可以直接把 調用後的Template 轉為 cache Template保存,在某時段之內的頁面,通過這 cache Template插入即時數據即可完成整個頁面,減輕伺服器負載。
二:把有關風格設定數據於初次化後直接寫入Template檔案中,減少變數的遞送。
三:把有關頁面判別顯示的功能寫入Template進行,以完善不同美化版本的需要。
四:歸類相同頁面部分,以減少讀取數據及編匯時間,同時亦能減少檔案體積。
技術內容:
略....
恩:) 补充点基本知识把:) 以前收集的,估计来源 PerlChina.org
用法简单说明:)
1、创建对象
use HTML::Template;
my $tmpl = HTML::Template->new();
2、创建一个简单的模板文件
<HTML>
<HEAD><TITLE>Test Template</TITLE>
<BODY>
My name is <TMPL_VAR NAME=MYNAME>
I love my girlfriend, your name is <TMPL_VAR NAME=FRIENDNAME>
</BODY>
</HTML>
3、定义 MYNAME 和 FRIENDNAME
$tmpl->param(
MYNAME => "刘德华",
FRIENDNAME => "梅超风",
);
依此类推 <IMG SRC="<TMPL_VAR NAME=IMAGE_SRC>">
$tmpl->param( IMAGE_SRC => "/images/logo.gif" );
4、显示输出 HTML
print $tmpl->output;
5、关于 IF 和 UNLESS
<TMPL_IF NAME="A"> COMMENTS </TMPL_IF> # 如果条件 A 成立,显示内容 COMMENTS
<TMPL_UNLESS NAME="A"> COMMENTS </TMPL_UNLESS> # 如果条件 A 不成立 ,显示内容 COMMENTS
以下也是一种用法
<TMPL_IF A>
………………
<TMPL_ELSE>
………………
</TMPL_IF>
6、INCLUDE
插入一个模板文件,下面的filename.tmpl内容插入到main.tmpl中
main.tmpl
-----------------
<HTML>
<HEAD><TITLE>Test Template</TITLE>
<BODY>
<TMPL_INCLUDE NAME="filename.tmpl">
My name is <TMPL_VAR NAME=MYNAME>
I love my girlfriend, your name is <TMPL_VAR NAME=FRIENDNAME>
</BODY>
</HTML>
-----------------
filename.tmpl
-----------------
<IMG SRC="<TMPL_VAR NAME=IMAGE_SRC>">
-----------------
7、关于更多操作方法
请参阅 POD 说明文档
或者
http://html-template.sourceforge.net/html_template.html
:em05:
模板文件有些PHP风格了……
对。。
ps:写了个小演示程序。。上传把,准备贻笑大方:)
http://easun.org/upload/early/test_1098601732.rar
http://easun.org/upload/early/lookinfo_1098613090.zip
LeoBBS lookinfo.cgi 程式基本 模塊化
用 %param 做循环应该可以作成通用函数。
估計LB一般慣用寫法 (${$_}) 會對非 global 變數不支援
Anthony 你跟bbser 說一說吧= =
我覺得要用非官方外力達成template 並跟上leobbsx 的更新是很困難的事。
只有bbser 採用才是王道。。。
恩,官方习惯这么用。还是 散列 好点,方便对象化和mod_perl化。
恩。非官方将带来严重的升级危机:)
呵呵,如果独立制作Template,那对于升级,将是一次痛苦的历程。
恩。似乎适合自己不升级的人?呵呵:)
这个花说效率低? Anthony有空测试下:)
使用了HTML::Template 內的 cache功能
不見得慢了那裡
问题在于HTML::Template 內的 cache只能在mod_perl运行,我看了说明。。
另外。如果简化Template模块的话?是否可以使之加速?
因为好多函数都可以不用的。。我觉得影响速度的应该有LOOP等。。这些可以不用。。那就是可以删除。。。
filecache 可以在非 mod_perl 情況下使用
減少代碼當然好吧
原话,好象说 cache option 只能用于 mod_perl ? 有条件的话测试下,就知道了:)
你看看吧
有關 cache 選項是做了分點說明的
那裡只注明 cache , shared_cache 及其有關選項才需要 mod_perl 支援
而 file cache 沒注,因此應該不需要
而且我那裡是個純perl 環境...
我理解错误。。 cache只能用于 mod_perl,但是 file_cache 应该可以用到普通的环境
恩,我已经回复,呵呵,你还是比我快:) :em06: