2010-02-19 10 views
11

Esiste un modo per disabilitare uno impostato in new(\%config), tramite il modello o un override temporaneo con parse()? Voglio avere un singolo valore predefinito WRAPPER (che userò per il 99,9% dei miei modelli), ma escludo alcuni.Come posso sostituire WRAPPER in un file modello Template Toolkit?

Sto facendo tutto questo attraverso Catalyst::View::TT proprio come nell'esempio nello configuration synopsis, tranne che non voglio che lo WRAPPER si applichi a tutti i miei modelli.

risposta

8

Modifica l'involucro, per includere un simile condizionale:

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

Questo mi permette di disattivare l'involucro o (1) all'interno del modello, o (2) dalla scorta.

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

META var ...; è una direttiva che rende var accessibile attraverso il template hash come template.var

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

+1

Ecco la piastra della caldaia XHTML 1.1 involucro con questo metodo: http://github.com/EvanCarroll/Craiglickr/blob/master/root/wrapper.tt –

4

Definire le eccezioni nello stesso site/wrapper, e btw ci sono già delle eccezioni definite.

[% 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; 
-%] 
Problemi correlati