2010-02-19 8 views
11

Y at-il un moyen de désactiver un WRAPPER qui a été défini dans new(\%config), via le modèle, ou un remplacement temporaire avec parse()? Je veux avoir une seule valeur par défaut WRAPPER (que je vais utiliser pour 99,9% de mes modèles), mais en exclure quelques-uns.Comment remplacer WRAPPER dans un fichier modèle Template Toolkit?

Je fais cela tout au long de Catalyst::View::TT tout comme l'exemple dans le configuration synopsis, sauf que je ne veux pas que le WRAPPER s'applique à tous mes modèles.

Répondre

8

Modifier l'emballage, pour inclure un conditionnel comme:

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

Cela me permet de désactiver l'emballage soit (1) à l'intérieur du modèle, ou (2) de la planque.

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

META var ...; est une directive qui rend var accessible par le hachage template comme template.var

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

+1

Voici l'emballage plaque de la chaudière XHTML 1.1 en utilisant cette méthode: http://github.com/EvanCarroll/Craiglickr/blob/master/root/wrapper.tt –

4

Définir des exceptions dans site/wrapper lui-même, et btw il y a déjà des exceptions.

[% 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; 
-%] 
Questions connexes