2010-02-19 16 views
11

¿Hay alguna manera de deshabilitar un WRAPPER establecido en new(\%config), mediante la plantilla o una sustitución temporal con parse()? Quiero tener un único valor predeterminado WRAPPER (que usaré para el 99.9% de mis plantillas), pero excluyo algunos.¿Cómo puedo anular WRAPPER en un archivo de plantilla Template Toolkit?

Estoy haciendo esto a través de Catalyst::View::TT como en el ejemplo en el configuration synopsis, excepto que no quiero que el WRAPPER se aplique a todas mis plantillas.

Respuesta

8

Editar la envoltura, para incluir una como condicional:

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

Esto me permite desactivar la envoltura o bien (1) en el interior de la plantilla, o (2) desde el escondite.

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

META var ...; es una directiva que hace var accesible a través del hash template como template.var

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

+1

Aquí está la placa de la caldera XHTML 1.1 envoltorio usando este método: http://github.com/EvanCarroll/Craiglickr/blob/master/root/wrapper.tt –

4

Defina las excepciones en site/wrapper, y por cierto hay excepciones ya definidas.

[% 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; 
-%] 
Cuestiones relacionadas