2010-02-19 28 views
11

Có cách nào để vô hiệu hóa một số WRAPPER được đặt trong new(\%config), thông qua mẫu hoặc ghi đè tạm thời bằng parse() không? Tôi muốn có một mặc định duy nhất WRAPPER (mà tôi sẽ sử dụng cho 99,9% các mẫu của mình), nhưng loại trừ một vài.Làm cách nào để ghi đè WRAPPER trong tệp mẫu của Bộ công cụ mẫu?

Tôi đang làm điều này tất cả thông qua Catalyst::View::TT giống như ví dụ trong configuration synopsis, ngoại trừ tôi không muốn WRAPPER để áp dụng cho tất cả các mẫu của mình.

Trả lời

8

Sửa wrapper, bao gồm một như có điều kiện:

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

này cho phép tôi để vô hiệu hóa các wrapper hoặc (1) bên trong mẫu, hoặc (2) từ stash.

  1. [%- META no_wrapper = 1 -%]
  2. $c->stash->{no_wrapper} = 1

META var ...; là một chỉ thị mà làm var truy cập thông qua băm template như template.var

nguồn: http://wiki.catalystframework.org/wiki/gettingstarted/howtos/template_wrappers

+1

Đây là tấm nồi hơi XHTML 1.1 wrapper sử dụng phương pháp này: http://github.com/EvanCarroll/Craiglickr/blob/master/root/wrapper.tt –

4

Xác định ngoại lệ trong chính số site/wrapper và btw có ngoại lệ được xác định tại đó.

[% 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; 
-%] 
Các vấn đề liên quan