如何在模板工具包模板文件中覆盖WRAPPER?

时间:2010-02-19 21:05:52

标签: perl templates catalyst

有没有办法通过模板或WRAPPER临时覆盖禁用new(\%config)中设置的parse()?我希望有一个默认WRAPPER(我将用于99.9%的模板),但不包括一些。

我正在通过Catalyst::View::TT执行此操作,就像configuration synopsis中的示例一样,除了我不希望WRAPPER应用于我的所有模板。

3 个答案:

答案 0 :(得分:8)

编辑包装器,以包含类似的条件:

[% IF no_wrapper OR template.no_wrapper %] [% content %] [% ELSE %]
  top;
    [% content %]
  bottom;
[% END %]

这允许我在模板内部(1)或(2)从存储中禁用包装。

  1. [%- META no_wrapper = 1 -%]
  2. $c->stash->{no_wrapper} = 1
  3. META var ...;是一个指令,通过var哈希template

    可以访问template.var

    来源:http://wiki.catalystframework.org/wiki/gettingstarted/howtos/template_wrappers

答案 1 :(得分:4)

site/wrapper本身中定义例外,顺便说一下已经定义了例外。

[% IF template.name.match('\.(css|js|txt)');
     debug("Passing page through as text: $template.name");
     content;
   ELSE;
     debug("Applying HTML page layout wrappers to $template.name\n");
     content WRAPPER site/html + site/layout;
   END;
-%]

答案 2 :(得分:0)

我偶然发现了同样的问题,并创建了一个更通用的解决方案,允许动态切换布局,或根本没有布局。见这里:

More than one layout/wrapper with Dancer and Template::Toolkit