Template Toolkit 的配置选项
时间:2008-06-25 来源:sohu2000000
原来的代码:
package Feeder::V::TT; |
怎么运行都不行。原因是 Template 的 INCLUDE_PATH 默认是用 : 来分隔多个路径的,比如:
INCLUDE_PATH => '/home/abw/templates:/usr/share/templates', |
这样就是两个路径。运行在 Win32 下,Template将“E:/Fayland/Feeder/templates”划分为了两个路径 E和/Fayland/Feeder/templates, 所以运行程序总是跳出找不到模版文件。
在配置里加了一句:
DELIMITER => ';', |
常用的几个翻译如下:
ABSOLUTE
指出用绝对路径的文件是否被解析。默认为 0.如 /foo/bar 在 1 时为绝对路径而在 0 时为相对路径。
在 0 时使用类如 [% INSERT /etc/passwd %] 会出错,除非相对路径也有这文件。
ANYCASE
指示性关键字如 INCLUDE 是否允许小写BLOCKS
此选项用于预先定义一系列模版块。
my $tt = Template->new({ |
这样我们就可以在其他模版文件里调用它们。
COMPILE_DIR/COMPILE_EXT
Template 可以将模版文件编译成 Perl 文件保存以便接下来的再次调用。
my $tt1 = Template->new({ |
DELIMITER 解释见最前面。
# Win32 only |
CONSTANTS
编译时编译一次这些常量,而不是每次运行都编译一次。
my $tt = Template->new({ |
CONSTANT_NAMESPACE
所有定义的 CONSTANTS 默认用 [% constants.title %] 来获得。而 CONSTANT_NAMESPACE 用来改变前缀。如:CONSTANTS_NAMESPACE => 'const',后,可以用 [% const.title %] 来访问。
NAMESPACE
用来定义多个 CONSTANT_NAMESPACE
my $tt = Template->new({ |
CONTEXT
设置上下文。具体用途有点复杂。略过。DEBUG
设置哪些地方需要调式。所定义的常量位于 use Template::Constants qw( :debug );有两种写法:
DEBUG => DEBUG_PARSER | DEBUG_PROVIDER,具体请查阅手册。
# or
DEBUG => 'parser, provider',
DEFAULT
当在 INCLUDE_PATH 里找不到模版文件时,默认调用该文件
my $tt = Template->new({ |
ERROR/ERRORS
定义一些常用的错误模版,然后在必要时调用它们。
my $tt = Template->new({ |
或在当前的 Template::Context 调用: $context->throw('user.passwd', 'Incorrect Password');
或在 Perl 代码中调用: die (Template::Exception->new('user.denied', 'Invalid User ID'));
EVAL_PERL
确定类如 PERL 或 RAWPERL 这样的块是否被执行。默认为 0FILTERS
自定义自己的filter,过滤器。用于处理文件的某一些转换。Template 默认自带了一些。
$tt = Template->new({ |
[% FILTER sfilt1 %] |
INCLUDE_PATH
它就是用于指定你要搜索的模版文件的文件夹。这几乎是用得最多的一个指令。START_TAG/END_TAG
用以指定template指令的起始和终止符号。默认为 %
my $tt = Template->new({ |
INTERPOLATE
内插。默认为 0
# INTERPOLATE => 0 |
OUTPUT/OUTPUT_PATH
在老版本的 Eplanet 里是常用的。可以将内容输出到文件。PRE_CHOMP, POST_CHOMP
是否在 [% %] 指令前后去除空行。默认不去除。这样的话:
<a href='[% address %]'>Click Here</a> |
<a href='将它们设置成 1, 即使有时候应该分开的行也并起来了。
fayland.html
'>Click Here</a>
PRE_DEFINE, VARIABLES
这两个选项是一样的。用于设置一些默认值。如果STASH没有设置的话采用它们,设定的话忽略。
my $tt = Template->new({ |
PRE_PROCESS, POST_PROCESS
调用一个 process 模版文件时预先调用和后来调用的模版文件。一般用于放置头文件和尾文件。
my $tt = Template->new({ |