2010-02-19 5 views
11

Gibt es eine Möglichkeit, eine WRAPPER, die in new(\%config) festgelegt wurde, entweder durch die Vorlage oder eine temporäre Überschreibung mit parse() zu deaktivieren? Ich möchte eine einzige Standardeinstellung haben WRAPPER (die ich für 99,9% meiner Vorlagen verwenden werde), aber ein paar ausschließen.Wie kann ich WRAPPER in einer Template Toolkit-Vorlagendatei überschreiben?

Ich mache das alles durch Catalyst::View::TT genau wie das Beispiel in der configuration synopsis, außer ich möchte nicht die WRAPPER für alle meine Vorlagen gelten.

Antwort

8

Bearbeiten der Wrapper, eine bedingte wie einschließen:

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

Dies ermöglicht es mir die Verpackung entweder (1) innerhalb von Vorlage zu deaktivieren, oder (2) aus dem Versteck.

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

META var ...; ist eine Richtlinie, die var zugänglich über die template Hash macht als template.var

Quelle: http://wiki.catalystframework.org/wiki/gettingstarted/howtos/template_wrappers

+1

Hier ist der Kesselblech XHTML 1.1 Wrapper mit dieser Methode: http://github.com/EvanCarroll/Craiglickr/blob/master/root/wrapper.tt –

4

Ausnahmen in site/wrapper selbst definieren, und es gibt dort Ausnahmen, die dort bereits definiert sind.

[% 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; 
-%] 
Verwandte Themen